#include<bits/stdc++.h>
using namespace std;
string n;
int number(int left,int right){ //将字符串转化为数字
int ans=0;
for(int i=left;i<=right;i++){
ans=ans*10+n[i]-'0';
}
return ans;
}
int cale(int l,int r){ //对某一个区间进行求值
int cnt=0,add=0,mul=0,power=0;
for(int i=l;i<=r;i++){
//找出这个区间里面的最后一个+-或*/或^的位置,目的是把区间细分为更小的部分
if(n[i]=='(') cnt++;
else if(n[i]==')') cnt--;
else if(!cnt){
switch(n[i]){
case '+':
case '-':
add=i;
case '*':
case '/':
mul=i;
case '^':
power=i;
}
}
}
if(cnt>0&&n[l]=='('){ //可能会输入多余的括号
return cale(l+1,r);
}
else if(cnt<0&&n[r]==')'){
return cale(l,r-1);
}
else if(!cnt&&!add&&!mul&&!power){
//如果只是(123)或者123这种情况,也是最小的一种子情况了
if(n[l]=='('&&n[r]==')'){
return cale(l+1,r-1);
}
return number(l,r);
}
//接下来就是细分区间了,转移成求更小的子区间的值
if(add){
if(n[add]=='+') return cale(l,add-1)+cale(add+1,r);
else return cale(l,add-1)-cale(add+1,r);
}
if(mul){
if(n[mul]=='*') return cale(l,mul-1)*cale(mul+1,r);
else return cale(l,mul-1)/cale(mul+1,r);
}
if(power){
return pow(cale(l,power-1),cale(power+1,r));
}
}
int main(){
cin>>n;
cout<<cale(0,n.size()-1)<<endl;
return 0;
}