#include <iostream>
using namespace std;
struct TreeNode {
char val;
TreeNode *left;
TreeNode *right;
TreeNode(char c) : val(c), left(nullptr), right(nullptr) {}
~TreeNode() {
delete left, right;
}
};
TreeNode *insertTree(TreeNode *root, char c) {
if (root == nullptr) return new TreeNode(c);
if (c < root->val) root->left = insertTree(root->left, c);
else root->right = insertTree(root->right, c);
return root;
}
bool isSameTree(TreeNode *p, TreeNode *q) {
if (p == nullptr && q == nullptr) return true;
if (p == nullptr || q == nullptr) return false;
return p->val == q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
int main() {
int n;
string s;
cin >> n >> s;
TreeNode *root1 = nullptr;
for (char c: s) root1 = insertTree(root1, c);
while (n--) {
string t;
cin >> t;
TreeNode *root2 = nullptr;
for (char c: t) root2 = insertTree(root2, c);
if (isSameTree(root1, root2)) cout << "YES" << endl;
else cout << "NO" << endl;
delete root2;
}
delete root1;
return 0;
}