/*
    将1 - 2 * 3 看作 “+1” + “-2 * 3”;
    常规计算器:栈stack + 符号标志位sign;
    栈每次记录符号位的前一个int值,与符号位配合即为真实值
    乘除时,直接将栈内的top值乘或除当前值。
    遇到‘(’、'{'、'['优先级符号,即递归。将括号里的运算递归计算并返回计算值
*/
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int cal(string &s, int& start) {
    stack<int> stk;
    char sign = '+';
    int num = 0;
    for(; start < s.size(); start++) {
        if(s[start] == '(' || s[start] == '{' || s[start] == '[') {
            start++;
            num = cal(s, start);
            start++;
        }
        if(isdigit(s[start])) {
            num = 10 * num + (s[start] - '0');
        }
        if((!isdigit(s[start]) && s[start] != ' ') || start == s.size() - 1) {
            int pre;
            switch (sign) {
                case '+' : 
                    stk.push(num);
                    break;
                case '-' : 
                    stk.push(-num);
                    break;
                case '*' : 
                    pre = stk.top();
                    stk.pop();
                    stk.push(pre * num);
                    break;
                case '/' : 
                    pre = stk.top();
                    stk.pop();
                    stk.push(pre / num);
                    break;
            }
            sign = s[start];
            num = 0;
        }
        if(s[start] == ')' || s[start] == '}' || s[start] == ']')
            break;
    }
    int res = 0;
    while(!stk.empty()) {
        res += stk.top();
        stk.pop();
    }
    return res;
}

int main() {
    string s;
    getline(cin, s);
    int start = 0;
    cout << cal(s, start) << endl;
    
    return 0;
}