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));
}
}
}
}