import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); // 获取输入字符串 String s = bf.readLine(); // 将输入的字符串分割成字符串数组 String[] words = s.split(" "); // 提取待查找单词原型,为数组倒数第二个元素 String str = words[words.length - 2]; // 原型字符串转字符数组后排序 char[] chStr=str.toCharArray(); Arrays.sort(chStr); // 提取k值,为数组倒数第一个元素 int k = Integer.parseInt(words[words.length - 1]); // 创建列表存放兄弟单词 ArrayList<String> broWords = new ArrayList<>(); // 遍历所给的字典单词,准备统计兄弟单词总个数 int count = 0; for (int i = 1; i < words.length - 2; i++) { // 提取与原型单词不相同且长度相等的单词 if ((!words[i].equals(str)) && words[i].length() == str.length()) { // 先将其转换为字符数组 char[] word = words[i].toCharArray(); // 排序 Arrays.sort(word); // 判断是否为兄弟单词 if (Arrays.equals(word,chStr)) { broWords.add(words[i]); count++; } } } // 输出兄弟单词个数 System.out.println(count); // 对兄弟单词排序后输出第k个 Collections.sort(broWords); if (k > 0 && k <= broWords.size()) { System.out.println(broWords.get(k-1)); } } }