#include <bits/stdc++.h>
using namespace std;

struct Node{
	char c;
	Node *left;
	Node *right;
};

Node *insert(Node *root,char c)
{
	if(root==NULL)
	{
		root=new Node();
		root->c=c;
	}
	else if(c>root->c){
		root->left=insert(root->left,c);
	}
	else if(c<root->c){
		root->right=insert(root->right,c);
	}
	return root; 
}

bool is_equal(Node *root1,Node *root2)
{
	if(root1==NULL&&root2==NULL)	return true;
	else if((root1!=NULL&&root2==NULL)||(root2!=NULL&&root1==NULL))	return false;
	//else return(root1->c==root2->c);//错在这里,根节点不为空,值不同可以判断两树不同,但根值相同不能说树相同
	else if(root1->c!=root2->c) return false; 
	return is_equal(root1->left,root2->left)&&is_equal(root1->right,root2->right);
}

int main(){
	int n;
	while(cin>>n)
	{
		if(n==0)	break;
		string s1;
		cin>>s1;
		Node *root1=NULL;
		for(int i=0;i<s1.size();i++)
		{
			root1=insert(root1,s1[i]);
		}
		for(int i=0;i<n;i++)
		{
			string s2;
			Node *root2=NULL;
			cin>>s2;
			for(int j=0;j<s2.size();j++)
			{
				root2=insert(root2,s2[j]);
			}
			if(is_equal(root1,root2))	cout<<"YES"<<endl;
			else	cout<<"NO"<<endl; 
		}
	}
	return 0;
}