class Solution {
  public:     
    int solve(string s) {
        stack<int>s1;
        stack<char>s2;
        s2.push('#');
        bool fl=false;
        int res=0;
        for(auto x:s)
        {
             if(x>='0'&&x<='9')
             {
                if(fl)res=res*10+x-'0';
                else res=x-'0';
                fl=true;
             }
             else
             {
                if(fl)s1.push(res),res=0;
                fl=false;
                if(x=='(')s2.push('(');
                else if(x==')')
                {
                    while(s2.top()!='(')
                    {
                        char c=s2.top();
                        s2.pop();
                        int c2=s1.top(),c1;
                        s1.pop();
                        c1=s1.top();
                        s1.pop();
                        if(c=='*')s1.push(c1*c2);
                        else if(c=='+')s1.push(c1+c2);
                        else s1.push(c1-c2);
                    }
                    s2.pop();
                }
                else
                 {
                    if(x!='*')
                    {
                        while(s2.top()=='*'||s2.top()=='+'||s2.top()=='-')
                        {
                            char c=s2.top();
                            s2.pop();
                            int c2=s1.top(),c1;
                            s1.pop();
                            c1=s1.top();
                            s1.pop();
                            if(c=='*')s1.push(c1*c2);
                            else if(c=='+') s1.push(c1+c2);
                            else s1.push(c1-c2);
                        }
                    }
                    s2.push(x);
                 };
             }
        }
        if(fl)s1.push(res);
        while(s2.top()!='#')
        {
            char c=s2.top();
            s2.pop();
            int c2=s1.top(),c1;
            s1.pop();
            c1=s1.top();
            s1.pop();
            if(c=='*')s1.push(c1*c2);
            else if(c=='+')s1.push(c1+c2);
            else s1.push(c1-c2);
        }
        return s1.top();
    }
};