import java.util.Arrays; import java.util.Scanner; public class Main { static int[] ftree = new int[11111]; static int[] stree = new int[11111]; public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int n = in.nextInt(); if (n == 0) break; String s = in.next(); Arrays.fill(ftree,-1); for (int i = 0; i < s.length(); i++) { int x = s.charAt(i)-'0'; int j = 1; while(ftree[j]!=-1){ if(x<=ftree[j]) j = j*2; else j = j*2+1; } ftree[j] = x; } for (int i = 0; i < n; i++) { String s1 = in.next(); Arrays.fill(stree, -1); for (int k = 0; k < s1.length(); k++) { int x = s1.charAt(k) - '0'; int j = 1; while (stree[j] != -1) { if (x <= stree[j]) j = j * 2; else j = j * 2 + 1; } stree[j] = x; } boolean flag = true; for (int k = 0; k < ftree.length; k++) { if (ftree[k] != stree[k]) { flag = false; break; } } if (flag) System.out.println("YES"); else System.out.println("NO"); } } } } /************************************************************** Problem: 2196 User: admin Language: Java Result: Accepted Time:643 ms Memory:40176 kb ****************************************************************/