#include <iostream>
using namespace std;
/**
题目描述:
输入一个括号序列(())()。
单独成对的括号()则表示为整数2。
(())则表示(2),如果外层还有一个括号则将内部的数字加一,所以(2) 得到3。
如果两个标准括号相连,例如()(), 则表示2*2 = 4。
输入'(())()' --> (2+1)*2 = 6
输入 '(()())(())' -->(1+2*2)*(2+1) = 15
*/
// 计算一对括号(包含内部子表达式)的值
int cal(string &exp, int start, int &end) {
int cur_end;
int result = 1;
start++;
while(start < exp.size()) {
// 右括号则表示当前括号对计算完毕,返回
if (exp[start] == ')') {
result += 1;
start++;
break;
// 左括号则递归调用计算该括号对的值
} else if(exp[start] == '(') {
result *= cal(exp, start, start);
}
}
end = start;
return result;
}
int main() {
string exp = "(()())()";
while(getline(cin, exp)) {
int start = 0;
int result = 1;
while(start < exp.size()) {
result *= cal(exp, start, start);
}
cout << result << endl;
}
return 0;
}