#include<bits/stdc++.h>
using namespace std;
const int MAX=111;
map<char,char>d;
void init(string a,int len,string b){
for(int i=0;i<len;i++)
d[a[i]]=b[i];
}
struct letters{
char x,y;
}p[MAX];
bool cmp(letters e,letters r){
return e.x>r.x;
}
bool check(string a,int len,string b){
for(int i=0;i<len;i++){
p[i].x=a[i];
p[i].y=b[i];
}
sort(p,p+len,cmp);
for(int i=0;i<len-1;i++)
if(p[i].x==p[i+1].x&&p[i].y!=p[i+1].y)return true;
int cnt1[MAX]={},cnt2[MAX]={};
for(int i=0;i<len;i++)cnt1[a[i]-'a']++;
for(int i=0;i<26;i++)if(cnt1[i]==0)return true;
for(int i=0;i<len;i++)cnt2[b[i]-'a']++;
for(int i=0;i<26;i++)if(cnt2[i]==0)return true;
return false;
}
string need,m,y;
int main(){
cin>>m>>y>>need;
int lenm=m.size(),leny=y.size(),len=need.size();
if(check(m,lenm,y))cout<<"Failed\n";
else{
init(m,lenm,y);
for(int i=0;i<len;i++)
cout<<d[need[i]];
cout<<'\n';
}
return 0;
}