#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char origin[200001];//记录原信息
char trans[200001];//记录翻译信息
char target[200001];//记录要翻译的信息
int ex[201];//记录每个密文中的字母在原信息中的字母
bool exx[201];//记录密文中的字母是否被翻译
bool exxx[201];//记录原信息中字母是否已经使用
int main()
{
//freopen("spy.in","r",stdin);
//freopen("spy.out","w",stdout);
memset(ex,0,sizeof(ex));
memset(exx,0,sizeof(exx));
gets(trans);
gets(origin);
gets(target);
int len=strlen(origin);
for(int i=0;i<len;i++)
{
if(ex[trans[i]]==0)
{
if(exxx[origin[i]])
{
cout<<"Failed";
//fclose(stdin);
//fclose(stdout);
return 0;
}//即为密文中此字母还未被翻译但是原文件中对应字母已被使用
ex[trans[i]]=(int)(origin[i]);
exx[trans[i]]=1;
exxx[origin[i]]=1;
}
else if(ex[trans[i]]!=(int)origin[i])
{
cout<<"Failed";
//fclose(stdin);
//fclose(stdout);
return 0;
} //即为密文中同一个字母对应不同的原文件字母
}
for(int i='A';i<='Z';i++)
{
if(ex[i]==0)
{
cout<<"Failed";
//fclose(stdin);
//fclose(stdout);
return 0;
}
}//即为字母A到Z中还有未翻译的
int len2=strlen(target);
for(int i=0;i<len2;i++)
cout<<(char)(ex[target[i]]);
//fclose(stdin);
//fclose(stdout);
return 0;
}