#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+7;
int ch[maxn][26],val[maxn],fail[maxn],cnt;
int ans[maxn];
char p[155][maxn],tmp[maxn];
int n;
void build()
{
queue<int> q;
for(int i=0;i<26;i++)
{
if(ch[0][i])
{
fail[ch[0][i]] = 0;
q.push(ch[0][i]);
}
}
while(!q.empty())
{
int v = q.front();
q.pop();
for(int i=0;i<26;i++)
{
if(ch[v][i])
{
fail[ch[v][i]] = ch[fail[v]][i];
q.push(ch[v][i]);
}
else
{
ch[v][i] = ch[fail[v]][i];
}
}
}
}
void insert(char *s,int x)
{
int len = strlen(s);
int now = 0;
for(int i=0;i<len;i++)
{
int v = s[i]-'a';
if(!ch[now][v]) ch[now][v] = ++cnt;
now = ch[now][v];
}
val[now] = x;
}
void query(char *s)
{
int len = strlen(s);
int now = 0;
for(int i=0;i<len;i++)
{
int v = s[i]-'a';
now = ch[now][v];
for(int t=now;t;t = fail[t])
{
ans[val[t]]++;
}
}
}
int main()
{
while(~scanf("%d",&n))
{
if(n==0) break;
memset(ch,0,sizeof(ch));
memset(val,0,sizeof(val));
memset(ans,0,sizeof(ans));
memset(fail,0,sizeof(fail));
cnt = 0;
for(int i=1;i<=n;i++)
{
scanf("%s",p[i]);
insert(p[i],i);
}
build();
scanf("%s",tmp);
query(tmp);
int tp = 0;
for(int i=1;i<=n;i++)
{
if(tp<ans[i]) tp = ans[i];
}
printf("%d\n",tp);
for(int i=1;i<=n;i++)
{
if(tp==ans[i])
{
cout<<p[i]<<endl;
}
}
}
return 0;
}