/**************************************************************** 
 * Description: 
 * Author: Alex Li
 * Date: 2024-01-25 07:36:32
 * LastEditTime: 2024-01-25 07:38:45
****************************************************************/
#include <bits/stdc++.h>
#define max 100  // 定义一个常量 max，表示数组的最大长度
char a[max],b[max];  // 定义两个字符数组 a 和 b，分别存储中序和后序遍历序列
using namespace std;

// pre 函数用于生成并打印先序遍历序列
void pre(char a[], char b[], int root, int start, int end) {
    int ops;  // ops 用于存储在中序遍历序列中找到的当前根节点的位置
    if (start > end)  // 如果开始位置大于结束位置，说明子树为空，返回
        return;

    // 寻找当前根节点在中序遍历序列中的位置
    for (int i = start; i <= end; i++) {
        if (a[i] == b[root]) {
            ops = i;
            break;
        }
    }

    cout << b[root];  // 打印当前的根节点

    // 递归处理左子树
    // 新的根是当前根的前一个节点，新的结束点是中序遍历中根节点的前一个位置
    pre(a, b, root - 1 - end + ops, start, ops - 1);

    // 递归处理右子树
    // 新的根是当前根的前一个节点，新的开始点是中序遍历中根节点的后一个位置
    pre(a, b, root - 1, ops + 1, end);
}

int main() {
    int len;
    cin >> a >> b;  // 读入中序和后序遍历序列
    len = strlen(a);  // 计算序列的长度
    pre(a, b, len - 1, 0, len - 1);  // 从根节点开始进行递归
    return 0;
}
