#include<bits/stdc++.h>
#define int long long
using namespace std;
string s;
stack<char>k;
stack<int>a;
stack<string>f;
queue<string>q;
string ans;
int qpow(int x,int y)
{
int ans=1,res=x;
while(y>0)
{
if (y&1)
{
ans*=res;
}
res*=res;
y=y>>1;
}
return ans;
}
signed main()
{
cin>>s;
int len=s.size();
if (s[0]==')')s.erase(0,1);
if (s[len-1]=='(')s.erase(len-1,1);
int l=0;
for (int i=0;i<len;i++)
{
if(s[i]=='(')k.push('(');
else if (s[i]==')'&&!k.empty())
{
k.pop();
}
else if (s[i]==')'&&k.empty())
{
l++;
}
}
if (!k.empty())
{
while(!k.empty())
{
s+=')';k.pop();len++;
}
}
if (l!=0)
{
while(l!=0)
{
s.insert(0,"(");len++;
l--;
}
}
int num=0,ff=0;
for(int i=0;i<len;i++)
{
if(s[i]>='0'&&s[i]<='9')
{
num=num*10+s[i]-'0'; ff=1;
}
else
{
if (ff==1) q.push(std::to_string(num));
num=0;ff=0;
}
if (s[i]<'0'||s[i]>'9')
{ff=0;
string y;y=s[i];
if (s[i]=='(')f.push("(");
else if (s[i]==')')
{
while(!f.empty()&&f.top()!="(")
{
q.push(f.top());
f.pop();
}
f.pop();
}
else if (f.empty())f.push(y);
else if (f.top()=="(")f.push(y);
else if ((f.top()=="+"||f.top()=="-")&&(s[i]=='*'||s[i]=='/'))f.push(y);
else if (s[i]=='^')f.push(y);
else if (s[i]=='+'||s[i]=='-')
{
while(!f.empty()&&f.top()!="(")
{
q.push(f.top());
f.pop();
}
f.push(y);
}
else if (s[i]=='*'||s[i]=='/')
{
while(!f.empty()&&f.top()!="("&&f.top()!="+"&&f.top()!="-")
{
q.push(f.top());
f.pop();
}
f.push(y);
}
}
}
if (ff==1)q.push(std::to_string(num));
ff=0;
while(!f.empty())
{
q.push(f.top());
f.pop();
}
for (int i=0;i<q.size();i++)
{
q.push(q.front());q.pop();
}
if (q.front()[0]=='-')
{
cout<<'-';
q.pop();
cout<<q.front();
return 0;
}
stack<int>um;
int lq=q.size();
for (int i=0;i<lq;i++)
{
if (q.front()[0]>='0'&&q.front()[0]<='9')
{
int sz=stoll(q.front());
um.push(sz);
q.pop();
}
else if (q.front()=="+"&&um.size()>1)
{
int xx=um.top();um.pop();
int yy=um.top();um.pop();
um.push(yy+xx);
q.pop();
}
else if (q.front()=="-"&&um.size()>1)
{
int xx=um.top();um.pop();
um.push(-xx);q.pop();
}
else if (q.front()=="*"&&um.size()>1)
{
int xx=um.top();um.pop();
int yy=um.top();um.pop();
um.push(yy*xx);
q.pop();
}
else if (q.front()=="/"&&um.size()>1)
{
int xx=um.top();um.pop();
int yy=um.top();um.pop();
um.push(yy/xx);
q.pop();
}
else if (q.front()=="^"&&um.size()>1)
{
int xx=um.top();um.pop();
int yy=um.top();um.pop();
um.push(qpow(yy,xx));
q.pop();
}
}
int ans=0;
while(!um.empty())
{
ans+=um.top();
um.pop();
}
cout<<ans;
return 0;
return 0;
}