import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int k = Integer.parseInt(st.nextToken()); Map>> index = new HashMap<>(); Map counts = new HashMap<>(); for (int i = 0; i < n; i++) { String word = br.readLine().trim(); char c = word.charAt(0); counts.put(word, 0); index .computeIfAbsent(c, x -> new TreeMap<>()) .computeIfAbsent(0, x -> new TreeSet<>()) .add(word); } for (int i = 0; i < k; i++) { String letter = br.readLine().trim(); char c = letter.charAt(0); TreeMap> byCount = index.get(c); Map.Entry> minEntry = byCount.firstEntry(); int minCount = minEntry.getKey(); TreeSet minWords = minEntry.getValue(); String bestWord = minWords.first(); sb.append(bestWord).append('\n'); minWords.remove(bestWord); if (minWords.isEmpty()) { byCount.remove(minCount); } int newCount = minCount + 1; byCount .computeIfAbsent(newCount, x -> new TreeSet<>()) .add(bestWord); counts.put(bestWord, newCount); } System.out.print(sb); } }