#include <bits/stdc++.h>
using namespace std;
int n,len[25],m=0,cnt[25][155][155],pre[25][155][155];
string a[25][155],b[105];
int main()
{
cin>>n;
for (int i=1;i<=n;i++){
cin>>b[i];
}
char c=getchar();
for (int i=1;1;i++){
c='0';
len[i]++;
while (c!='\n'){
bool flag=1;
cin>>a[i][len[i]];
for (int j=1;j<=n;j++){
if (a[i][len[i]]==b[j]){
flag=0;
break;
}
}
len[i]+=flag;
c=getchar();
}
if (a[i][1]=="LAST" && a[i][2]=="CASE"){
break;
}
len[i]--;
m++;
}
for (int i=1;i<=m;i++){
if ((int)a[i][1].size()-1>len[i]){
continue;
}
for (int k=0;k<(int)a[i][1].size();k++){
a[i][1][k]=a[i][1][k]+'a'-'A';
for (int j=2;j<=len[i];j++){
int ls=0;
for (int s=0;s<(int)a[i][j].size();s++){
if (a[i][j][s]==a[i][1][k]){
ls++;
}
}
if (k==0){
cnt[i][j][k]=ls;
}
else {
cnt[i][j][k]=pre[i][j-1][k-1]*ls;
}
pre[i][j][k]=pre[i][j-1][k]+cnt[i][j][k];
}
a[i][1][k]=a[i][1][k]-'a'+'A';
}
}
for (int i=1;i<=m;i++){
int ans=0;
for (int j=2;j<=len[i];j++){
ans+=cnt[i][j][(int)a[i][1].size()-1];
}
if (ans==0){
cout<<a[i][1]<<" is not a valid abbreviation"<<endl;
}
else {
cout<<a[i][1]<<" can be formed in "<<ans<<" ways"<<endl;
}
}
}