#include<iostream>
#include<string>
using namespace std;

 

//递归判断是否是同一棵二叉搜索树

//时间复杂度O(nlogn)

bool is_same(string a,string b)
{
         if(a==b)
            return true;
         if(a[0]!=b[0])
            return false;
         string a1,a2,b1,b2;
         unsigned i;
         for(i=1;i<a.size();i++)
         {
             if(a[i]>a[0])
                 a2+=a[i];
             else
                 a1+=a[i];
            if(b[i]>b[0])
                 b2+=b[i];
            else
                  b1+=b[i];
        }

 if(is_same(a1,b1)&&is_same(a2,b2))
        return true;
 else
        return false;
}

int main()
{
        int m;
       string a,b;
       while(1)
       {
             cin>>m;
            if(m==0)
               break;
           cin>>a;
           for(int j=0;j<m;j++)
          {
                cin>>b;
                if(is_same(a,b))
                     cout<<"YES"<<endl;
                else
                     cout<<"NO"<<endl;
            }
  }
 return 0;
}

/**************************************************************
	Problem: 2196
	User: admin
	Language: C++
	Result: Compile Error
****************************************************************/