//利用先序和中序重新构造树,构造完成后后序遍历即可。其中对树的构造可采用分治递归的思想
#include "stdio.h"
#include "string"
using namespace std;
struct TreeNode{
    char data;
    TreeNode *leftChild;
    TreeNode *rightChild;
};

TreeNode *RebuildTree(string PreOrder,string Inorder){//利用先序和中序重新构造树
    if (PreOrder.size()==0)
        return NULL;
    else{
        TreeNode *node = new TreeNode;//建在堆中
        node->data=PreOrder[0];
        char N = PreOrder[0];
        int pos = Inorder.find(N);
        node->leftChild = RebuildTree(PreOrder.substr(1,pos),Inorder.substr(0,pos));
        node->rightChild = RebuildTree(PreOrder.substr(pos+1),Inorder.substr(pos+1));
        return node;
    }
}

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

int main(){
    char PreOrder[30];
    char InOrder[30];
    while (scanf("%s%s",PreOrder,InOrder)!=EOF){
        TreeNode *root = RebuildTree(PreOrder,InOrder);
        PostOrder(root);
        printf("\n");
    }
}