#include<iostream>
#include<string>
using namespace std;
struct TreeNode{
    int data;
    TreeNode* lchild;
    TreeNode* rchild;
    TreeNode(int n):data(n),lchild(NULL),rchild(NULL){}
};
TreeNode* Insert(TreeNode* root,int x){
    if(root==NULL){
        root=new TreeNode(x);
    }
    else if(x>root->data){
        root->rchild=Insert(root->rchild,x);
    }
    else{
        root->lchild=Insert(root->lchild,x);
    }
    return root;
}
bool Compare(TreeNode* root1,TreeNode* root2){
    if(root1==NULL&&root2==NULL){
        return true;
    }
    if(root1==NULL||root2==NULL||root1->data!=root2->data){
        return false;
    }
    return Compare(root1->lchild,root2->lchild)&&Compare(root1->rchild,root2->rchild);
}
int main(){
    int n;
    while(cin>>n){
        if(n==0){
            break;
        }
        string s;
        cin>>s;
        TreeNode* root1=NULL;
        for(int i=0;i<s.size();i++){
            int x=s[i]-'0';
            root1=Insert(root1,x);
        }
        while(n){
            string a;
            cin>>a;
            int t;
            TreeNode* root2=NULL;
            for(int i=0;i<s.size();i++){
                t=a[i]-'0';
                root2=Insert(root2,t);
            }
            if(Compare(root1,root2)){
                cout<<"YES"<<endl;
            }
            else{
                cout<<"NO"<<endl;
            }
            n--;
        }
    }
}