program vigenere;
var
k,c:ansistring;
lenk,lenc,i,t,x,y,f:longint;
b:array[1..2000]of boolean;
ch:char;
begin
readln(k);
readln(c);
lenk:=length(k);
lenc:=length(c);
fillchar(b,sizeof(b),false);
for i:=1 to lenc do
if c[i] in ['a'..'z'] then
b[i]:=true;
f:=0;
k:=upcase(k);
c:=upcase(c);
for i:=1 to lenc do
begin
f:=f+1;
x:=ord(c[i]);
if f>lenk then f:=1;
y:=ord(k[f]);
t:=x-(y-ord('A'));
if t<ord('A') then t:=t+26;
ch:=chr(t);
if b[i] then write(chr(ord(ch)+32))
else write(ch);
end;
writeln;
end.
/**************************************************************
Problem: 2314
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/