#include<stdio.h>
#include<string.h>
int main(void)
{
int n;
scanf("%d",&n);
char str[1000][10];
char str2[1000][10];
int i=0;
for(int i=0;i<n;i++)
{
scanf("%s",&str[i]);
}
char x[10];
scanf("%s",&x);
int k;
scanf("%d",&k);
int len=strlen(x);
int cnt=0;
int flag=0;
int ii=0;
for(i=0;i<n;i++)
{
if(strlen(str[i])==len&&strcmp(str[i],x)!=0)
{
int map[26]={0};
for(int j=0;j<len;j++)
{
map[str[i][j]-'a']++;
map[x[j]-'a']--;
}
for(int m=0;m<26;m++)
{
if(map[m]!=0)
{
flag=1;
}
}
if(flag==0)
{
cnt++;
strcpy(str2[ii++],str[i]);
}
flag=0;
}
}
printf("%d\n",cnt);
//排序
for(i=0;i<cnt-1;i++)
{
for(int j=0;j<cnt-1-i;j++)
{
if(strcmp(str2[j+1],str2[j])<0)
{
char temp[10];
strcpy(temp,str2[j+1]);
strcpy(str2[j+1],str2[j]);
strcpy(str2[j],temp);
}
}
}
printf("%s\n",str2[k-1]);
return 0;
}
#include<string.h>
int main(void)
{
int n;
scanf("%d",&n);
char str[1000][10];
char str2[1000][10];
int i=0;
for(int i=0;i<n;i++)
{
scanf("%s",&str[i]);
}
char x[10];
scanf("%s",&x);
int k;
scanf("%d",&k);
int len=strlen(x);
int cnt=0;
int flag=0;
int ii=0;
for(i=0;i<n;i++)
{
if(strlen(str[i])==len&&strcmp(str[i],x)!=0)
{
int map[26]={0};
for(int j=0;j<len;j++)
{
map[str[i][j]-'a']++;
map[x[j]-'a']--;
}
for(int m=0;m<26;m++)
{
if(map[m]!=0)
{
flag=1;
}
}
if(flag==0)
{
cnt++;
strcpy(str2[ii++],str[i]);
}
flag=0;
}
}
printf("%d\n",cnt);
//排序
for(i=0;i<cnt-1;i++)
{
for(int j=0;j<cnt-1-i;j++)
{
if(strcmp(str2[j+1],str2[j])<0)
{
char temp[10];
strcpy(temp,str2[j+1]);
strcpy(str2[j+1],str2[j]);
strcpy(str2[j],temp);
}
}
}
printf("%s\n",str2[k-1]);
return 0;
}