#include "hieroglyphs.h"
#include <vector>
#include <algorithm>
using namespace std;
typedef vector<int> vi;
vi ucs(vi A,vi B){
int n=A.size(),m=B.size();
int lim=max(n,m);
vi C;
vector<vi> ca(lim),cb(lim);
for(int i=0;i<n;++i) ca[A[i]].emplace_back(i);
for(int i=0;i<m;++i) cb[B[i]].emplace_back(i);
for(int i=0;i<lim;++i)
if(!ca[i].empty()&&!cb[i].empty()) C.emplace_back(i);
bool nosol=0;
if(C.empty()) return vi(1,-1);
sort(C.begin(),C.end(),
[&](int x,int y){
bool f0=0,f1=0;
for(int ax:ca[x]) for(int bx:cb[x]) for(int ay:ca[y]) for(int by:cb[y]){
if((ax<ay)&&(bx<by)) f0=1;
if((ax>ay)&&(bx>by)) f1=1;
}
if(f0&&!f1) return 1;
if(f1&&!f0) return 0;
nosol=1;
return x<y;
});
if(nosol) return vi(1,-1);
int p=0;
for(int i=0;i<n;++i){
if(C[p]==A[i]) ++p;
if(p==(int)C.size()) break;
}
if(p!=(int)C.size()) return vi(1,-1);
p=0;
for(int i=0;i<m;++i){
if(C[p]==B[i]) ++p;
if(p==(int)C.size()) break;
}
if(p!=(int)C.size()) return vi(1,-1);
return C;
}