#include <iostream>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
typedef long long int ll;

string p,q;
int r;

bool cal(string s,int l){
    bool no=0;
    stack<bool> st;
    stack<char> sc;
    for(int i=l;i<s.size();i++){
        if(s[i]==')'){
            r=i;
            return st.top();
        }
        else if(s[i]=='-'&&s[i+1]!='>'){
            no^=1;
        }
        else if(s[i]=='T'||s[i]=='F'||s[i]=='('){
            int ii=i;
            if(s[i]=='('){
                if(cal(s,i+1)){
                    s[i]='T';
                }
                else{
                    s[i]='F';
                }
                ii=r;
            }
            if(no){
                if(s[i]=='T')s[i]='F';
                else s[i]='T';
            }
            no=0;
            if(st.size()==0){
                st.push(s[i]=='T');
            }
            else{
                if(sc.top()=='+'){
                    bool rr=st.top();
                    st.pop();
                    if(rr||s[i]=='T'){
                        st.push(1);
                    }
                    else{
                        st.push(0);
                    }
                }
                else if(sc.top()=='*'){
                    bool rr=st.top();
                    st.pop();
                    if(rr&&(s[i]=='T')){
                        st.push(1);
                    }
                    else{
                        st.push(0);
                    }
                }
                else{
                    bool rr=st.top();
                    st.pop();
                    if(rr&&(s[i]=='F')){
                        st.push(0);
                    }
                    else{
                        st.push(1);
                    }
                }
            }
            i=ii;
        }
        else{
            sc.push(s[i]);
            if(s[i]=='-')i++;
        }
    }
    return 0;
}

bool solve(string s){
    stack<bool> st;
    bool no=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='('){
            bool p=cal(s,i+1);
            if(no){
                p^=1;
                no=0;
            }
            i=r;
            st.push(p);
        }
        else if(s[i]=='-')no^=1;
        else{
            if(no){
                if(s[i]=='T')s[i]='F';
                else s[i]='T';
            }
            st.push(s[i]=='T');
        }
    }
    return st.top();
}

int main(){
    string s,t;
    while(cin >> s,s!="#"){
        bool ok=1;
        for(int i=0;i<s.size();i++){
            if(s[i]=='='){
                t=s.substr(i+1);
                s=s.substr(0,i);
                break;
            }
        }
        for(int i=0;i<(1<<11);i++){
            p=s; q=t;
            for(int j=0;j<p.size();j++){
                if('a'<=p[j]&&p[j]<='k'){
                    if((i>>(p[j]-'a'))&1){
                        p[j]='T';
                    }
                    else{
                        p[j]='F';
                    }
                }
            }
            for(int j=0;j<q.size();j++){
                if('a'<=q[j]&&q[j]<='k'){
                    if((i>>(q[j]-'a'))&1){
                        q[j]='T';
                    }
                    else{
                        q[j]='F';
                    }
                }
            }
            if(solve(p)!=solve(q))ok=0;
        }
        if(ok)printf("YES\n");
        else printf("NO\n");
    }
}



Measured memory_bytes: 3208