#include <cstddef>
#include <iostream>
#include <cstring>
using namespace std;
struct BStree{
int data;
BStree* lchild;
BStree* rchild;
BStree(int x):data(x),lchild(NULL),rchild(NULL){}
};
BStree* buildBS(BStree* r,int x){
if(r==NULL){
r=new BStree(x);
}
else if(x<r->data){
r->lchild=buildBS(r->lchild, x);
}
else r->rchild=buildBS(r->rchild, x);
return r;
}
bool mjudge(BStree* a,BStree* b){
if(a==NULL && b== NULL) return true;
else if(a->data==b->data) return true&&mjudge(a->lchild, b->lchild)
&&mjudge(a->rchild, b->rchild);
else return false;
}
BStree* string2bs(string x){
BStree* r=NULL;
for(int i=0;i<x.length() ;i++){
r=buildBS(r,x[i]-'0');
}
return r;
}
int main() {
int n;
while(cin>>n){
if(n==0) break;
string o;
cin>>o;
BStree* root1=string2bs(o);
for(int i=0;i<n;i++){
string news;
cin>>news;
BStree* root2=string2bs(news);
if(mjudge(root1,root2)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
}