#include<fstream>
#include<iostream>
using namespace std;
const int MaxN=5000;
const int MaxM=54*100*100 ;
string name[MaxN] , s[MaxM] ;
string a;
int b ,sep ,tav ;
ifstream fin ("namenum.in");
ofstream fout ("namenum.out");
void compare(int i,int start,int end){
for(int j=start ;j<end ;j++){
if(s[j] == name[i]){
fout << s[j] << endl;
sep ++ ;
}
}
}
void harf1(int aa,int i){
for(int j=0 ;j<b ;j++){
if(a[i] == 50)
s[aa+j] += "A";
else if(a[i] == 51)
s[aa+j] += "D";
else if(a[i] == 52)
s[aa+j] += "G";
else if(a[i] == 53)
s[aa+j] += "J";
else if(a[i] == 54)
s[aa+j] += "M";
else if(a[i] == 55)
s[aa+j] += "P";
else if(a[i] == 56)
s[aa+j] += "T";
else if(a[i] == 57)
s[aa+j] += "W";
}
}
void harf2(int aa,int i){
for(int j=0 ;j<b ;j++){
if(a[i] == 50)
s[aa+j] += "B";
else if(a[i] == 51)
s[aa+j] += "E";
else if(a[i] == 52)
s[aa+j] += "H";
else if(a[i] == 53)
s[aa+j] += "K";
else if(a[i] == 54)
s[aa+j] += "N";
else if(a[i] == 55)
s[aa+j] += "R";
else if(a[i] == 56)
s[aa+j] += "U";
else if(a[i] == 57)
s[aa+j] += "X";
}
}
void harf3(int aa,int i){
for(int j=0 ;j<b ;j++){
if(a[i] == 50)
s[aa+j] += "C";
else if(a[i] == 51)
s[aa+j] += "F";
else if(a[i] == 52)
s[aa+j] += "I";
else if(a[i] == 53)
s[aa+j] += "L";
else if(a[i] == 54)
s[aa+j] += "O";
else if(a[i] == 55)
s[aa+j] += "S";
else if(a[i] == 56)
s[aa+j] += "V";
else if(a[i] == 57)
s[aa+j] += "Y";
}
}
int main() {
ifstream userstream("dict.txt");
int zz=0 ;
while(!userstream.eof()){
userstream >> name[zz];
zz++;
}
fin >> a;
int tav=1;
for(int i=0 ;i<a.length() ;i++)
tav *=3 ;
int c=1;
for(int i=0 ;i<a.length();i++){
c *=3 ;
b = tav/c ;
int aa=0;
while( aa < tav ){
if( (aa/b)%3 == 0 )
harf1(aa,i);
else if( (aa/b)%3 == 1 )
harf2(aa,i);
else if( (aa/b)%3 == 2 )
harf3(aa,i);
aa += b;
}
}
for(int i=0 ;i<zz ;i++){
if(name[i][0]==s[0][0] )
compare(i,0,tav/3);
else if ( name[i][0]==s[tav/3][0])
compare(i,tav/3,2*tav/3);
else if ( name[i][0]==s[2*tav/3][0])
compare(i,2*tav/3,tav);
}
if(sep==0)
fout << "NONE" << endl;
return 0;
}