#include<cstdio>
#include<iostream>
using namespace std;
const int N=15;
int k;
char a[N],b[N],c[N];
struct node{
	int value;
	node *l,*r;
	node(int value=0,node *l=NULL,node *r=NULL):value(value),l(l),r(r){};
};
void creat(int t,node *&root){
	if(!root) root=new node(t);
	else if(root->value<t) creat(t,root->r);
	else creat(t,root->l); 
}

void preorder(char d[],node *root){
	if(root){
		d[k++]=root->value+'0';
		preorder(d,root->l);
		preorder(d,root->r);
	}
}

void remove_tree(node *root){
	if(!root) return;
	remove_tree(root->l);
	remove_tree(root->r);
	delete root;
}

int main(){
	int n;
	while(cin>>n){
		if(n==0) break;
		node *root=NULL;
		scanf("%s",a);
		for(int i=0;a[i]!='\0';i++) creat(a[i]-'0',root);
		k=0;
		preorder(b,root);
		b[k]='\0';
		while(n--){
			node *root2=NULL;
			scanf("%s",a);
			for(int i=0;a[i]!='\0';i++) creat(a[i]-'0',root2);
			k=0;
			preorder(c,root2);
			c[k]='\0';
			if(strcmp(b,c)==0) cout<<"YES\n";
			else cout<<"NO\n";
			remove_tree(root2);
		}
		remove_tree(root);
	}
	return 0;
}