program spy;
var a:array['A'..'Z'] of char;
i,j,k,m,n,l:longint;
c:char;
s:array[1..3]of string;
begin
assign(input,'spy.in');
assign(output,'spy.out');
reset(input);
rewrite(output);
readln(s[1]);
readln(s[2]);
readln(s[3]);
l:=length(s[1]);
for c:='A' TO 'Z' do a[c]:='0';
if l<26 then begin writeln('Failed'); exit; end;
for i:=1 to l do
begin
if (a[s[1][i]]<>'0') and (a[s[1][i]]<>s[2][i])
then begin writeln('Failed'); exit; end;
a[s[1][i]]:=s[2][i];
end;
for c:='A' to 'Z' do if a[c]='0' then begin writeln('Failed'); exit; end;
l:=length(s[3]);
for i:=1 to l do
write(a[s[3][i]]);
writeln;
close(input);
close(output);
end.
var a:array['A'..'Z'] of char;
i,j,k,m,n,l:longint;
c:char;
s:array[1..3]of string;
begin
assign(input,'spy.in');
assign(output,'spy.out');
reset(input);
rewrite(output);
readln(s[1]);
readln(s[2]);
readln(s[3]);
l:=length(s[1]);
for c:='A' TO 'Z' do a[c]:='0';
if l<26 then begin writeln('Failed'); exit; end;
for i:=1 to l do
begin
if (a[s[1][i]]<>'0') and (a[s[1][i]]<>s[2][i])
then begin writeln('Failed'); exit; end;
a[s[1][i]]:=s[2][i];
end;
for c:='A' to 'Z' do if a[c]='0' then begin writeln('Failed'); exit; end;
l:=length(s[3]);
for i:=1 to l do
write(a[s[3][i]]);
writeln;
close(input);
close(output);
end.