#include <deque>
#include <iostream>
#include <set>
#include <string>
using namespace std;

/*
程序思路:目标是构建两个一一对应的字符串
    一个是 26位字母表
    一个是 输入中的字符串按照题目要求的方法得出的字符串 str2.
    题目的关键也是构建 str2.

如何构建str2?
    1. 遍历字符串
    2. 通过set集合去除字符串中重复元素
    3. 通过deque 双端队列保持字母的相对位置不变
    4. 这样就将单词中包含有重复的字母,只保留第1个,将所得结果作为新字母表开头,
    5. 之后再补上后面缺少的单词
*/ 
int main() {
    string key, str;
    cin >> key;
    cin >> str;

    string str1 = "abcdefghijklmnopqrstuvwxyz";
    string str2;

    int len = key.length();
    deque<char> dq;
    set<char> st;

    for (auto c : key) {
        if (st.count(c) ) {
            continue;
        }
        st.insert(c);
        dq.push_back(c);
    }

    while (!dq.empty()) {
        str2 += dq.front();
        dq.pop_front();
    }


    for (char c = 'a'; c <= 'z'; c++) {
        if (st.count(c) ) {
            continue;
        }
        str2 += c;
    }

    string ans;
    for (auto c : str) {
        ans += str2[str1.find_last_of(c)];
    }
    cout << ans << endl;


}
// 64 位输出请用 printf("%lld")