#include<bits/stdc++.h>
using namespace std;
using Int = long long;
template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}

//INSERT ABOVE HERE


struct T{
  map<string, Int> ms;
  T(){}
  T(string s, Int c){
    sort(s.begin(),s.end());
    ms[s]+=c;
  }

  T operator+=(const T &a){
    for(auto p:a.ms)
      ms[p.first]+=p.second;
    return *this;
  }
  
  T operator-=(const T &a){
    for(auto p:a.ms)
      ms[p.first]-=p.second;
    return *this;
  }
  
  T operator+(const T &a) const{
    T res(*this);
    return res+=a;
  }
  
  T operator-(const T &a) const{
    T res(*this);
    return res-=a;
  }
  
  T operator*(const T &a) const{
    T res;
    for(auto p:ms)
      for(auto q:a.ms)
        res+=T(p.first+q.first,p.second*q.second);
    return res;
  }

  T pow(Int k) const{
    assert(k>=1);
    T res(*this);
    for(Int i=1;i<k;i++) res=res*(*this);
    return res;
  }
  
  bool operator==(const T &a){
    return ms==a.ms;
  }
};

using V = vector<string>; 
T expr  (const V &vs,Int &p);
T term  (const V &vs,Int &p);
T factor(const V &vs,Int &p);
T power (const V &vs,Int &p);
Int number(const V &vs,Int &p);

T expr  (const V &vs,Int &p){
  T res=term(vs,p);
  while(p<(Int)vs.size()){
    if(vs[p]=="+"s){
      p++;
      res=res+term(vs,p);
      continue;
    }
    if(vs[p]=="-"s){
      p++;
      res=res-term(vs,p);
      continue;
    }
    break;
  }
  return res;
}

T term  (const V &vs,Int &p){  
  T res=factor(vs,p);
  while(p<(Int)vs.size()){
    if(vs[p]=="+"s) break;
    if(vs[p]=="-"s) break;
    if(vs[p]=="^"s) break;
    if(vs[p]==")"s) break;
    res=res*factor(vs,p);
  }
  return res;
}

T factor(const V &vs,Int &p){  
  T res=power(vs,p);
  if(p<(Int)vs.size()&&vs[p]=="^"s){
    p++;
    Int k=number(vs,p);
    return res.pow(k);
  }  
  return res;
}

T power (const V &vs,Int &p){
  if(vs[p]=="("s){
    p++;
    T res=expr(vs,p);
    assert(vs[p]==")"s);
    p++;
    return res;
  }
  if(isalpha(vs[p][0])) return T(vs[p++],1);
  return T(""s, number(vs,p));
}

Int number(const V &vs,Int &p){
  return stoll(vs[p++]);
}

T tran(string s){
  Int n=s.size();
  string t;
  for(Int i=0;i<n;i++){
    if(!isdigit(s[i])) t+=' ';
    t+=s[i];
    if(!isdigit(s[i])) t+=' ';
  }  
  V vs;
  stringstream ss(t);
  while(ss>>t) vs.emplace_back(t);
  Int p=0;
  return expr(vs,p);
}

signed main(){
  string s;
  while(getline(cin,s)){
    if(s=="."s) break;
    auto vs=tran(s);
    while(1){
      string t;
      getline(cin,t);      
      if(t=="."s) break;
      auto vt=tran(t);
      cout<<(vs==vt?"yes":"no")<<endl;
    }    
    cout<<"."<<endl;
  }
  return 0;
}

