#include<iostream>
#include<stack>
#include<cmath>
#include<cstring>
using namespace std;
stack<char> fu;
stack<int> shu;
char cs[300],m;
int quan(char p){
if(p=='+' || p=='-')return 1;
if(p=='*' || p=='/')return 2;
if(p=='^')return 3;
return 0;
}
void calc(){
int jg;
int a=shu.top();
shu.pop();
int b=shu.top();
shu.pop();
char c=fu.top();
fu.pop();
switch(c){
case '+':jg=b+a;break;
case '-':jg=b-a;break;
case '*':jg=b*a;break;
case '/':jg=b/a;break;
case '^':jg=pow(b,a);break;
}
shu.push(jg);
}
int main(){
cin>>cs;
int la=strlen(cs);
int s=0,z=0;
for(int i=0;i<la;i++){
m=cs[i];
if(m>='0' && m<='9')s=s*10+(m-'0'),z=1;
else{
if(z==1) shu.push(s), s=0, z=0;
if(m=='('){ fu.push('(');
continue;
}else if(m==')'){
while(fu.top()!='(')calc();
fu.pop(); continue;
}
while(!fu.empty()&&quan(fu.top())>=quan(m))calc();
fu.push(m);
}
}
if(z)shu.push(s); while(!fu.empty())calc(); cout<<shu.top();
return 0;
}