import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String key = sc.next();
String data = sc.next();
LinkedHashSet<Character> linkedHashSet = new LinkedHashSet<>(26);
for (char c : key.toCharArray()) {
// 使用set集合去重
linkedHashSet.add(c);
}
ArrayList<Character> list = new ArrayList<>(linkedHashSet);
// 将剩下的字母进行追加
for (int i = (int) 'A'; i <= (int) 'Z'; i++) {
if (!list.contains((char) i)
&& !list.contains(Character.toLowerCase((char) i))) {
// 大小写都未出现,追加
list.add((char) i);
}
}
StringBuilder builder = new StringBuilder(data.length());
for (char c : data.toCharArray()) {
if (c >= 'A' && c <= 'Z'){
// 找到该字符对应的26位字母表的索引,我们生成新的字母表与原有a~z字母表是对应的
int index = c - 65;
// 注意大小写与原有的一致
builder.append(Character.toUpperCase(list.get(index)));
}
if (c >= 'a' && c <= 'z'){
int index = c - 97;
builder.append(Character.toLowerCase(list.get(index)));
}
}
System.out.println(builder);
}
}