#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;
int qpow(int x,int y)
{
int ns=1,res=x;
while(y>0)
{
if (y&1)
{
ns*=res;
}
res*=res;
y=y>>1;
}
return ns;
}
signed main()
{
cin>>s;
int len=s.size();
if (!s.empty()&&s[0]==')')s.erase(0,1);
if (!s.empty()&&s[len-1]=='(')s.erase(len-1,1);
int l=0;
for(int i=0;i<s.size()-2;i++)
{
if ((s[i]<'0'||s[i]>'9')&&(s[i]!='('&&s[i]!=')')&&s[i+1]=='-')s.insert(i+1,"("),i++;
else if ((i==0&&s[i+1]>='0'&&s[i+1]<='9'))
{
s.insert(i,"(");i+=2;
while(s[i]>='0'&&s[i]<='9')
{
i++;
}
s.insert(i,")");i+=2;
}
}
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();
}
}
if (l!=0)
{
while(l!=0)
{
s.insert(0,"(");
l--;
}
}
int num=0,ff=0;
len=s.size();
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();
}
stack<int>um;
int lq=q.size();
for (int i=0;i<lq;i++)
{
if ((q.front()[0]>='0'&&q.front()[0]<='9')||(q.front()[1]>='0'&&q.front()[1]<='9'))
{
int sz=stoll(q.front());
um.push(sz);
q.pop();
}
else if (um.size()>1&&q.front()=="+")
{
int xx=um.top();um.pop();
int yy=um.top();um.pop();
um.push(yy+xx);
q.pop();
}
else if (um.size()>=1&&q.front()=="-")
{
int xx=um.top();um.pop();
um.push(-xx);q.pop();
}
else if (um.size()>1&&q.front()=="*")
{
int xx=um.top();um.pop();
int yy=um.top();um.pop();
um.push(yy*xx);
q.pop();
}
else if (um.size()>1&&q.front()=="/")
{
int xx=um.top();um.pop();
int yy=um.top();um.pop();
um.push(yy/xx);
q.pop();
}
else if (um.size()>1&&q.front()=="^")
{
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;
}