#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;
}