#include<iostream> #include<cstdio> #include<string> using namespace std; string d[10100]; //把字典定义在主函数外 int n; void get_d() //输入字典 { n=0; char ch[20]; while(scanf("%s",ch)) { d[n]=ch; if(d[n]=="#")break; else n++; } } void check(string s) { int j,dif,simi=0,flg=1; string similar[10000];//用一个数组记录相似的单词 for(int i=0; i<n; i++) { if(s==d[i]) //如果相同,则输出,并做记录 { cout<<s<<" is correct"<<endl; flg=0; break; } else if(s.size()==d[i].size()) //字符数相等 { dif=0; for(j=0; j<s.size(); j++) if(s[j]!=d[i][j]) { dif++; if(dif==2)break; } if(dif==1) { similar[simi++]=d[i]; } } else if(s.size()==d[i].size()+1||s.size()==d[i].size()-1)//字符数相差一个 { int a=0,b=0; dif=0; while(a<=s.size()&&b<=d[i].size()) { if(dif>1)break; if(s[a]==d[i][b]) { a++; b++; } else if(s.size()>d[i].size())//这里只移动字符长的 { dif++; a++; } else { dif++; b++; } } if(dif==1)similar[simi++]=d[i]; } } if(flg) //如果没有相等的单词 { cout<<s<<":"; if(simi>0) for(j=0; j<=simi; j++) cout<<" "<<similar[j];//把相似的单词逐个输出 cout<<endl; } } int main() { string s; get_d(); while(cin>>s) { if(s=="#")break; else check(s); } return 0; }