import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case // int a = in.nextInt(); // int b = in.nextInt(); // System.out.println(a + b); int n = in.nextInt(); String[] arr = new String[n]; for (int i = 0; i < n; i++) { arr[i] = in.next(); } String x = in.next(); int k = in.nextInt(); HashMap<Character, Integer> xMap = getCharMap(x); ArrayList<String> broList = new ArrayList<>(); for (String s : arr) { if (isBro(s, x, xMap)) { broList.add(s); } } System.out.println(broList.size()); if (broList.size() >= k) { broList.sort((s1, s2) -> { for (int i = 0; i < s1.length(); i++) { if (s1.charAt(i) != s2.charAt(i)) { return s1.charAt(i) - s2.charAt(i); } } return 0; }); System.out.println(broList.get(k - 1)); } } } private static boolean isBro(String s, String x, HashMap<Character, Integer> xMap) { if (x.length() != s.length()) { return false; } if (x.equals(s)) { return false; } HashMap<Character, Integer> sMap = getCharMap(s); for (char k : xMap.keySet()) { if (!xMap.get(k).equals(sMap.get(k))) { return false; } } return true; } private static HashMap<Character, Integer> getCharMap(String s) { HashMap<Character, Integer> map = new HashMap<>(); for (char c : s.toCharArray()) { map.put(c, map.getOrDefault(c, 0) + 1); } return map; } }