#include<cstdio>
#include<string>
using namespace std;
struct TreeNode {
char data;
TreeNode* LChild;
TreeNode* RChild;
};
void InSertBSTTree(TreeNode*& root, char data ) {
TreeNode* pa = new TreeNode;
pa->data = data;
pa->LChild = NULL;
pa->RChild = NULL;
if (root == NULL) {
root = pa;
} else {
TreeNode* ppre = root;
TreeNode* pcur;
while (true) {
if (data < ppre->data) {
pcur = ppre->LChild;
if (pcur == NULL) {
ppre->LChild = pa;
break;
} else {
ppre = pcur;
}
} else {
pcur = ppre->RChild;
if (pcur == NULL) {
ppre ->RChild = pa;
break;
} else {
ppre = pcur;
}
}
}
}
}
string MidOrder( TreeNode* root) {
if (root == NULL) {
return "";
}
return MidOrder(root->LChild) + root->data + MidOrder(root->RChild);
}
string PreOrder( TreeNode* root) {
if (root == NULL) {
return "";
}
return root->data + PreOrder(root->LChild) + PreOrder(root->RChild);
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
if (0 == n ) {
break;
}
char str1[100];
scanf("%s", str1);
TreeNode* root1 = NULL;
for (int i = 0 ; str1[i] != '\0'; ++i) {
InSertBSTTree(root1, str1[i]);
}
string PreOrder1 = PreOrder((root1));
string MidOrder1 = MidOrder((root1));
// printf("%s %s",PreOrder1.c_str(),MidOrder1.c_str());
char str2[100];
for (int idx = 0 ; idx<n; ++idx){
scanf("%s", str2);
TreeNode* root2 = NULL;
for (int i = 0 ; str2[i] != '\0'; ++i) {
InSertBSTTree(root2, str2[i]);
}
string PreOrder2 = PreOrder((root2));
string MidOrder2 = MidOrder((root2));
if (PreOrder2 == PreOrder1 && MidOrder1 == MidOrder2) {
printf("YES\n");
} else {
printf("NO\n");
}
}
}
}