#include<stdio.h>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
//定义树结点
typedef struct Node {
char data;
struct Node* rchild, * lchild;
} BiTNode, *BiTree;
BiTNode* CreatTree(string prestr, string instr) {
if (prestr.size() == 0 || instr.size() == 0)return NULL;
char c = prestr[0];//先序序列第一个元素为根
BiTNode* root = new BiTNode();
root->data = c;
//中序序列中,以先序第一个元素分左右子树的中序序列
int pos = instr.find(c);
//传入左子树的先序序列,左子树的中序序列
root->lchild = CreatTree(prestr.substr(1, pos), instr.substr(0, pos));
//传入右子树的先序序列,右子树的中序序列
root->rchild = CreatTree(prestr.substr(pos + 1), instr.substr(pos + 1));
return root;
}
//后序遍历
void PostOrder(BiTree T) {
if (T == NULL)return;
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c", T->data);
}
int main() {
string prestr, instr;
while (getline(cin, prestr)) {
getline(cin, instr);
BiTNode* root = CreatTree(prestr, instr);
PostOrder(root);
printf("\n");
}
return 0;
}