import java.util.*;

/**
 * @Author kyp
 * @Date 21-9-15 &{TIME}
 */
public class Main {
    /**
     * 定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。
     * 兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。
     * 现在给定你n个单词,另外再给你一个单词str,让你寻找str的兄弟单词里,按字典序排列后的第k个单词是什么?
     * 注意:字典中可能有重复单词。本题含有多组输入数据。
     *
     * 输入描述:
     * 先输入单词的个数n,再输入n个单词。 再输入一个单词,为待查找的单词x 最后输入数字k
     * 输出描述:
     * 输出查找到x的兄弟单词的个数m 然后输出查找到的按照字典顺序排序后的第k个兄弟单词,没有符合第k个的话则不用输出。
     *
     */

    public static void main(String[] args) {
        //String a = "6 cab ad abcd cba abc bca abc 1";
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()) {
            String[] s = sc.nextLine().split(" ");
            List<String> list = new ArrayList<>();
            int b = Integer.parseInt(s[0]);


            for (int i = 1; i <= b; i++) {
                String s1 = s[b + 1];
                char[] chars1 = s[i].toCharArray();
                if (s[b+1].length()==s[i].length() && !s[b+1].equals(s[i])){
                    for (char c : chars1) {
                        s1 = s1.replaceFirst(String.valueOf(c),"");
                    }
                    if (s1.equals("")){
                        list.add(s[i]);
                    }
                }

            }

        /*for (String s1 : list) {
            System.out.println(s1);
        }*/
            Collections.sort(list);
            System.out.println(list.size());
            if (list.size()>=Integer.parseInt(s[s.length - 1])){
                System.out.println(list.get(Integer.parseInt(s[s.length - 1]) - 1));
            }
        }
    }

}