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

typedef struct btree {
    struct btree *left;
    struct btree *right;
    char c;
} btree;

// 根据前序和中序构建二叉树的递归函数
btree* build(string pre, string in) {
    if (pre.empty() || in.empty()) 
    return NULL;

    // 创建根节点(前序遍历第一个字符)
    btree* node = new btree();
    node->c = pre[0];
    node->left = node->right = NULL;

    // 在中序中找到根节点位置
    size_t root_pos = in.find(pre[0]);
    
    // 分割左右子树的中序字符串
    string left_in = in.substr(0, root_pos);
    string right_in = in.substr(root_pos + 1);

    // 分割左右子树的前序字符串
    string left_pre = pre.substr(1, left_in.length());
    string right_pre = pre.substr(1 + left_in.length());

    // 递归构建子树
    node->left = build(left_pre, left_in);
    node->right = build(right_pre, right_in);

    return node;
}

// 后序遍历输出
void postOrder(btree* t) {
    if (!t) return;
    postOrder(t->left);
    postOrder(t->right);
    cout << t->c;
}

int main() {
    
    string pre, in;
    while(cin>>pre>>in)
    {
    btree* root = build(pre, in);  // 构建二叉树
    postOrder(root);  // 输出后序
    cout<<endl;
    }

}