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