#include <cstdio>
#include <cstring>
char dic[10005][20];
int t;
int del(char a[],char b[])
{
int i;
for(i=0;a[i];i++)
if(a[i]!=b[i])
break;
if(!strcmp(a+i+1,b+i)) return 1;
return 0;
}
int rep(char a[],char b[])
{
int i;
for(i=0;a[i];i++)
if(a[i]!=b[i])
break;
if(!strcmp(a+i+1,b+i+1)) return 1;
return 0;
}
int add(char a[],char b[])
{
int i;
for(i=0;b[i];i++)
if(a[i]!=b[i])
break;
if(!strcmp(a+i,b+i+1)) return 1;
return 0;
}
int main()
{
int i,flag,a;
char s[20];
t=0;
while(scanf("%s",dic[t])!=EOF)
{
if(!strcmp(dic[t],"#"))
break;
t++;
}
while(scanf("%s",s)!=EOF)
{
if(s[0]==‘#‘) break;
flag=1;
for(i=0;i<t;i++)
if(!strcmp(dic[i],s))
{
printf("%s is correct",s);
flag=0;
break;
}
if(flag)
{
printf("%s:",s);
for(i=0;i<t;i++)
{
a=strlen(s)-strlen(dic[i]);
if(a==1 && del(s,dic[i]))
printf(" %s",dic[i]);
if(a==0 && rep(s,dic[i]))
printf(" %s",dic[i]);
if(a==-1 && add(s,dic[i]))
printf(" %s",dic[i]);
}
}
printf("\n");
}
return 0;
}
poj Spell checker