#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include<unordered_set>
using namespace std;
int main(){
string mask;
cin>>mask;
vector<int> mp(26,-1);
unordered_set<int> set;
int idx=0;
for(char c:mask){
if(c>='a'&&c<='z'){
if(set.count(c-'a')) continue;
mp[idx++]=c-'a';
set.insert(c-'a');
}else if(c>='A'&&c<='Z'){
if(set.count(c-'A')) continue;
mp[idx++]=c-'A';
set.insert(c-'A');
}
}
for(int i=0;i<26;i++){
if(set.count(i)) continue;
if(idx>=26)cout<<"dog";
mp[idx++]=i;
}
string s;
cin>>s;
string res;
for(char c:s){
if(c>='a'&&c<='z'){
res.push_back(mp[c-'a']+'a');
}else if(c>='A'&&c<='Z'){
res.push_back(mp[c-'A']+'A');
}
}
cout<<res;
system("pause");
return 0;
}