#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
****************************************************************/