#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct tree
{
char no;
struct tree *left,*right;
}
NODE;
NODE *create(NODE *root,char *sn)
{
NODE *p,*pre,*insert;
while(*sn != '/0')
{
if(root == NULL)
{
root = (NODE *)malloc(sizeof(NODE));
root->no = *sn;
root->left = root->right = NULL;
}
else
{
pre = p = root;
while(p != NULL)
{
if( p->no - *sn > 0)
{
pre = p;
p = p->left;
}
else
{
pre = p;
p = p->right;
}
}
insert = (NODE *)malloc(sizeof(NODE));
insert->no = *sn;
insert->left = insert->right = NULL;
if( pre->no - insert->no > 0)
pre->left = insert;
else
pre->right = insert;
}
sn++;
}
return root;
}
int treecmp(NODE *root1,NODE *root2)
{
if(root1 == NULL && root2 == NULL)
return 1;
else if(root1 == NULL && root2 != NULL)
return 0;
else if(root1 != NULL && root2 == NULL)
return 0;
else
{
if( root1->no == root2->no
&& treecmp(root1->left,root2->left) == 1
&& treecmp(root1->right,root2->right) == 1)
return 1;
else
return 0;
}
}
int main(int argc, char* argv[])
{
char treesn[11];
char cmpstr[11];
int n,i;
int result;
NODE *root = NULL;
NODE *cmproot = NULL;
scanf("%d",&n);
while(n != 0)
{
scanf("%s",treesn);
root = create(root,treesn);
for(i=0;i<n;i++)
{
scanf("%s",cmpstr);
cmproot = create(cmproot,cmpstr);
result = treecmp(root,cmproot);
if(result == 1)
printf("YES/n");
else
printf("NO/n");
cmproot = NULL;
}
root = NULL;
scanf("%d",&n);
}
return 0;
}