//土尔逊Torson 编写于2023/06/09
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <string>

using namespace std;

struct TreeNode {
	char data;
	TreeNode * leftChild;
	TreeNode * rightChild;
};

TreeNode * rebuild(string preOrder, string inOrder) {
	//rebuild的返回值表示子树的根节点的地址
	if (preOrder.size() == 0) {
		return NULL;
	}
	else {
		//从先序确定根
		char rootdata = preOrder[0];
		TreeNode *pNewNode = new TreeNode;
		pNewNode->data = rootdata;
		//拿根去切割中序
		int pos = inOrder.find(rootdata);//pos是根在中序序列中出现的下标
										 // preOrder.substr(1,pos) 将preOrder切割,取出从下标1开始,长度为pos的子串
										 // preOrder.substr(pos+1) 将preOrder切割,取出从下标pos+1开始,到结束位置的子串
										 // inOrder.substr(0,pos)
										 // inOrder.substr(pos+1)
		pNewNode->leftChild = rebuild(preOrder.substr(1, pos), inOrder.substr(0, pos));
		pNewNode->rightChild = rebuild(preOrder.substr(pos + 1), inOrder.substr(pos + 1));
		return pNewNode;
	}
}

void postOrder(TreeNode *root) {
	if (root == NULL) {
		return;
	}
	postOrder(root->leftChild);
	postOrder(root->rightChild);
	printf("%c", root->data);
}

int main() {
	char preOrder[30];
	char inOrder[30];
	while (scanf("%s%s", preOrder, inOrder) != EOF) {
		TreeNode * root;
		root = rebuild(preOrder, inOrder);
		postOrder(root);
		printf("\n");
	}
}
// 64 位输出请用 printf("%lld")