#python3 from collections import defaultdict
while True:
try:
#defaultdict主要用来需要对value做初始化的情形。对于字典来说,key必须是hashable,immutable,unique的数据,
#而value可以是任意的数据类型。如果value是list,dict等数据类型,在使用之前必须初始化为空,有些情况需要把value初始化为特殊值,比如0或者''。
d=defaultdict(list)
s=input().split()
words,find,index,bro=s[1:1+int(s[0])],s[-2],int(s[-1]),[]
#words代表输入的多个单词,find代表要查找的单词,index代表要查找其在兄弟单词的个数,bro代表兄弟单词存放的列表
for i in words:
d["".join(sorted(i))].append(i)
#对words中的单词按兄弟单词分组,属于兄弟单词的每一个单词排序后都一样,分好之后放入字典中
for i in d["".join(sorted(find))]:#查找上述字典中和find同属一组兄弟单词的那一组单词
if i!=find:#找出其中与find不同的单词放入列表bro中
bro.append(i)
print(len(bro))
if bro and index <= len(bro):#如果列表bro为空或者index大于列表bro的长度,则没有结果,不输出
print(sorted(bro)[index-1])#要先对bro进行排序
except:
break
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool isBrothers(string str,string s){
if(str.size()==s.size()){
if(str==s)
return false;
sort(str.begin(),str.end());
sort(s.begin(),s.end());
if(str==s)
return true;
}
return false;
}
int main(){
int num;
while(cin >> num){
string str;
vector<string> words;
string find, res;
int index;
for(int i=0;i<num;i++){
cin >> str;
words.push_back(str);
}
sort(words.begin(),words.end());
cin >> find >> index;
int count=0;
for(int i=0;i<num;i++){
if(isBrothers(find,words[i])){
count++;
if(count==index)
res=words[i];
}
}
if(!words.empty())
cout << count << endl;
if(count>=index)
cout << res << endl;
}
return 0;
}