import java.util.* ;
public class Main{
public static void main(String...args) {
Scanner sc = new Scanner(System.in) ;
while(sc.hasNextLine()) {
ptr = 0 ;
char arr[] = sc.nextLine().toCharArray() ;
System.out.println(comp(arr)) ;
}
}
static int ptr = 0 ;
public static int comp(char[] arr) {
char opt = '+' ;
int num = 0 ;
Stack<Integer> st = new Stack<>() ;
while(ptr < arr.length) {
if(arr[ptr] == '(' || arr[ptr] == '[' || arr[ptr] == '{') {
ptr ++ ;
num = comp(arr) ;//将括号里面又当成是一个 没括号的计算式 递归计算
}
//拿到数字(数字有可能大于一位)
while(ptr < arr.length && isNum(arr[ptr])) {
num = num*10 + (arr[ptr]-'0') ;
ptr ++ ;
}
//看上一个符号是什么
switch(opt) {
case '+' :
st.push(num) ;break ;
case '-' :
st.push(-num) ;break ;
case '*' :
st.push(st.pop()*num) ;break ;
case '/' :
st.push(st.pop()/num) ;break ;
}
//重置得到的数字
num = 0 ;
//每次处理完数字后 将其紧跟的符号记录,便于下一个数字入栈或计算
if(ptr < arr.length) {
//还要检查是否到了右括号,若是 那么break计算结果并返回
if(arr[ptr] == ')' || arr[ptr] == ']' || arr[ptr] == '}'){
ptr ++ ;
break ;
}
opt = arr[ptr] ;
}
ptr ++ ;
}
//将栈中的和数都弹出来相加即为结果
int ret = 0 ;
while(!st.isEmpty()) {
ret += st.pop() ;
}
return ret ;
}
public static boolean isNum(char ch) {
if(ch >= '0' && ch <= '9') {
return true ;
}
return false ;
}
}