#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
using namespace std;
string zimu[27], shuzi[10], final[100], compare, _final[100];
int n;
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
char middle;
while(cin>>middle && middle!='*')
{
if(middle>='A' && middle<='Z')
cin>>zimu[middle-'A'];
else
cin>>shuzi[middle-'0'];
}
while(cin>>final[n] && final[n]!="*")
{
for(int a=0;a<final[n].size();a++)
{
if(final[n][a]>='A' && final[n][a]<='Z')
{
if(a==0)_final[n]=zimu[final[n][a]-'A'];
else _final[n]+=zimu[final[n][a]-'A'];
}
else
{
if(a==0)_final[n]=shuzi[final[n][a]-'0'];
else _final[n]+=shuzi[final[n][a]-'0'];
}
}
n++;
}
while(cin>>compare && compare!="*")
{
int flag=0, cur=0, pi=9999;
string ou;
for(int a=0;a<n;a++)
{
if(_final[a].size()==compare.size() && _final[a]==compare)
{
flag++;
if(flag==1)ou=final[a];
else
{
if(final[a]<ou)ou=final[a];
}
}
else if(_final[a].size()>compare.size() && _final[a].substr(0, compare.size())==compare)
{
cur++;
if(!flag)
{
if(_final[a].size()-compare.size()<pi)
{
ou=final[a];
pi=_final[a].size()-compare.size();
}
else if(_final[a].size()-compare.size()==pi)
{
if(final[a]<ou)ou=final[a];
}
}
}
else if(_final[a].size()<compare.size() && _final[a]==compare.substr(0, _final[a].size()))
{
cur++;
if(!flag)
{
if(compare.size()-_final[a].size()<pi)
{
ou=final[a];
pi=compare.size()-_final[a].size();
}
else if(compare.size()-_final[a].size()==pi)
{
if(final[a]<ou)ou=final[a];
}
}
}
}
if(flag==1)cout<<ou<<endl;
else if(flag>1)cout<<ou<<'!'<<endl;
else if(cur)cout<<ou<<'?'<<endl;
else
{
ou=final[0];
for(int a=1;a<n;a++)
{
if(ou<final[a])ou=final[a];
}
cout<<ou<<endl;
}
}
return 0;
}
uva 508 莫斯科密码
最新推荐文章于 2021-11-01 19:45:29 发布