#include <bits/stdc++.h>
using namespace std;
int main() {
string K, C, M; // 密钥、密文、明文
cin >> K >> C;
// 把 密钥 转换为大写字母
for (int i = 0; i < K.size(); i++) {
K.at(i) = toupper(K.at(i));
}
int indexK = 0;
// 顺序遍历 密文 的每一个字符 转换为 明文
for (int i = 0; i < C.size(); i++) {
if (isupper(C.at(i))) {
// M.at(i) = C.at(i) - (K.at(indexK) - 'A'); // 字符串尚为空
M.push_back(C.at(i) - (K.at(indexK) - 'A')); // 密文逆转换明文 +=
indexK++;
if (M.at(i) < 'A') { // 如果超出大写字母范围, 循环到末尾
M.at(i) = 'Z' - ('A' - M.at(i)) + 1;
}
} else {
// M.at(i) = C.at(i) - (K.at(indexK) - 'A'); // 字符串尚为空
M.push_back(C.at(i) - (K.at(indexK) - 'A')); // 密文逆转换明文
indexK++;
if (M.at(i) < 'a') { // 如果超出小写字母范围, 循环到末尾
M.at(i) = 'z' - ('a' - M.at(i)) + 1;
}
}
// 如果密钥索引移动到末尾, 则重新回到起始位置
if (indexK > K.size() - 1) {
indexK = 0;
}
}
cout << M << endl;
return 0;
}