//此题坑人之处在于,明文密文必须“互相”对应,既不重复,也不遗漏。
//从rq的测试数据来看,如果没有考虑这一点,就有一个点通不过。
#include <stdio.h>
#include <string.h>
int main()
{
char f[100],s[100];
scanf("%s",f);
scanf("%s",s);
char dy[26]; //保存对应表
int i;
for(i=0;i<26;i++) dy[i]=0;
int sta=1; //保存退出状态
for(i=0;i<strlen(f);i++)
{
if(dy[f[i]-'A']==0)
{
dy[f[i]-'A']=s[i];
}
else
{
if(dy[f[i]-'A']!=s[i]) {sta=3;break;}
}
}
int stat[26]={0};
for(i=0;i<strlen(f);i++) stat[dy[i]-'A']++;
for(i=0;i<26;i++) if(stat[i]==0) sta=3;
for(i=0;i<26;i++) if(dy[i]==0) sta=2;
char c[100];
scanf("%s",c);
if(sta!=1)
{
printf("Failed");
}
else
{
for(i=0;i<strlen(c);i++) printf("%c",dy[c[i]-'A']);
}
return 0;
}