#include<stdio.h>
#include<string.h>
struct tree
{
int count;
tree *next[30];
char c[20];
int mark;
tree()
{
count=0;
mark=0;
for(int i=0;i<26;i++)
{
next[i]=NULL;
}
}
}*root;
void build(char *ch,char *word)
{
tree *item=root;
for(int i=0;word[i]!=NULL;i++)
{
int j=word[i]-'a';
if(item->next[j]==NULL)
{
item->next[j]=new tree;
}
item=item->next[j];
item->count++;
}
item->mark=1;
strcpy(item->c,ch);
}
char* find(char *word)
{
tree *item=root;
for(int i=0;word[i]!=NULL;i++)
{
int j=word[i]-'a';
if(item->next[j]==NULL)
{
return NULL;
}
item=item->next[j];
}
if(item->mark==1)
{
return item->c;
}
else
{
return NULL;
}
}
int main()
{
root=new tree;
char word[3005];
char ch[20];
int j,i;
scanf("%s",word);
while(scanf("%s",word),strcmp(word,"END"))
{
scanf("%s",ch);
build(word,ch);
}
scanf("%s",word);
getchar();
while(gets(word),strcmp(word,"END"))
{
int l=strlen(word);
int k=0;
for(i=0;i<l;i++)
{
while(word[i]>='a'&&word[i]<='z')
{
ch[k++]=word[i];
i++;
}
ch[k]='\0';
char* t=find(ch);
if(t!=0)
{
printf("%s",t);
}
else
{
printf("%s",ch);
}
printf("%c",word[i]);
k=0;
}
printf("\n");
}
}