import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String s=in.nextLine();
s=s.replace('{','(');
s=s.replace('}',')');
s=s.replace('[','(');
s=s.replace(']',')');
//System.out.println(s);
Stack<String> ans=nibolan(s);
//System.out.println(ans);
System.out.println(count(ans));
}
private static int count(Stack<String> ans){
Stack<Integer> num=new Stack<>();
while(!ans.empty()){
//System.out.println(num);
String s1=ans.pop();
if(s1.equals("+")){
int a1=num.pop();
int a2=num.pop();
a1=a1+a2;
num.push(a1);
}
else if(s1.equals("-")){
int a1=num.pop();
int a2=num.pop();
a1=a2-a1;
num.push(a1);
}
else if(s1.equals("*")){
int a1=num.pop();
int a2=num.pop();
a1=a1*a2;
num.push(a1);
}
else if(s1.equals("/")){
int a1=num.pop();
int a2=num.pop();
a1=a2/a1;
num.push(a1);
}
else {
int temp=0;
if(s1.charAt(0)=='-'){
for(int i=1;i<s1.length();i++){
temp=temp*10+(s1.charAt(i)-'0');
}
temp=-temp;
}
else{
for(int i=0;i<s1.length();i++){
temp=temp*10+(s1.charAt(i)-'0');
}
}
num.push(temp);
}
}
return num.peek();
}
private static Stack<String> nibolan(String s){
Stack<String> zifu=new Stack<>();
Stack<String> sum=new Stack<>();
int l=s.length(),x=0;
while(x<l){
char c=s.charAt(x);
String cs=new String();
cs+=c;
if(c>='0'&&c<='9'){
String mid=new String();
mid=mid+c;
x++;
while(x<l&&s.charAt(x)>='0'&&s.charAt(x)<='9')
{mid=mid+s.charAt(x);x++;}
sum.push(mid);
continue;
}
if(cs.equals("-")&&(x==0||s.charAt(x-1)=='(')){
//x++;
String mid=new String();
mid+='-';
// mid=mid+c;
x++;
while(x<l&&s.charAt(x)>='0'&&s.charAt(x)<='9')
{mid=mid+s.charAt(x);x++;}
sum.push(mid);
continue;
}
if(zifu.empty()||zifu.peek().equals("(")||cs.equals("("))
{String mid=new String();mid+=c;
zifu.push(mid);x++;continue;}
if(cs.equals(")")){
while(!zifu.peek().equals("(")){
sum.push(zifu.pop());
}
zifu.pop();
x++;continue;
}
if(priority(cs)>priority(zifu.peek()))
{zifu.push(cs);x++;continue;}
else{
String cs1=zifu.pop();
sum.push(cs1);
while(!zifu.empty()){
if(zifu.peek().equals("("))
{zifu.push(cs);break;}
if(priority(cs)>priority(zifu.peek()))
{zifu.push(cs);break;}
if(!zifu.empty())
{cs1=zifu.pop();sum.push(cs1);}
}
if(zifu.empty())zifu.push(cs);
x++;continue;
}
}
while(!zifu.empty())
{sum.push(zifu.pop());}
while(!sum.empty())
{zifu.push(sum.pop());}
return zifu;
}
private static int priority(String s){
if(s.equals("+")||s.equals("-")) return 1;
if(s.equals("*")||s.equals("/")) return 2;
System.out.println("priority错误"+s);
return 0;
}
}