import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //1.先输入字典中单词的个数n
        Integer n = sc.nextInt();
        //2.再输入n个单词作为字典单词
        List<String> LC = new ArrayList<>();
        for(int i = 0; i < n ; i++){
            LC.add(sc.next());
        }
        //3.然后输入一个单词x 
        String strX = sc.next();
        //4.最后后输入一个整数k
        Integer numK = sc.nextInt();

        //1.第一行输出查找到x的兄弟单词的个数m
        Integer countM = 0;
        List<String> SiblingWords = new ArrayList<>();
        for(String s : LC){
            if(IsSiblingWords(s,strX)){
                SiblingWords.add(s);
                countM++;
            }
        }
        System.out.println(countM);
        //第二行输出查找到的按照字典顺序排序后的第k个兄弟单词,没有符合第k个的话则不用输出。
        Collections.sort(SiblingWords);
        if(SiblingWords.size()>=numK){
            System.out.println(SiblingWords.get(numK-1));
        }
    }
    //定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。兄弟单词要求和原来的单词不同。例如: ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。
    private static boolean IsSiblingWords(String s, String strX) {
        if(s.length()!=strX.length() || s.equals(strX)){
            return false;
        }
        char[] s_chars = s.toCharArray();
        char[] strX_chars = strX.toCharArray();
        Arrays.sort(s_chars);
        Arrays.sort(strX_chars);
        return (new String(s_chars).equals(new String(strX_chars)));
    }
}

注意:

1.{ Collections.sort(SiblingWords); }

2.{

char[] s_chars = s.toCharArray();

char[] strX_chars = strX.toCharArray();

Arrays.sort(s_chars);

Arrays.sort(strX_chars);

return (new String(s_chars).equals(new String(strX_chars)));

}