#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;#define pb push_back#define x first#define y secondconstLLS=2e7+100;constLLN=2e6+100;charstr[S];strings;vector<string>v;intcnt=0;intn;inttr[S][6],idx;intst[S];intnum[S];intz[S];pair<int,int>out[N];intres;boolyes[N];voidinit(){ios::sync_with_stdio(false);cin.tie(0);}voidinsert(){staticintcnt=0;intp=0;for(inti=0;i<s.size();i++){intc=s[i]-'0';if(!tr[p][c]){tr[p][c]=++idx;}p=tr[p][c];}st[p]++;if(num[p]==-1){v[cnt]=s;num[p]=cnt++;}}voidupdateZ(){memset(z,0,sizeof(int)*(cnt+1));for(inti=1,l=0,r=0;i<cnt;i++){if(i<=r&&z[i-l]<r-i+1)z[i]=z[i-l];else{z[i]=max(0,r-i+1);while(i+z[i]<cnt&&str[z[i]]==str[i+z[i]])z[i]++;}if(i+z[i]-1>r)l=i,r=i+z[i]-1;}}voidoutput(intup,intstu){out[res++]={num[up],stu};vector<int>vv;for(inti=0,p=0;i<cnt-1;i++){p=tr[p][str[i]-'0'];if(st[p]){intlen=v[num[p]].size();if(z[len]==cnt-len){len=z[len];if(str[(len+z[len])%cnt]>str[z[len]%cnt]){yes[num[p]]=1;vv.push_back(num[p]);}}elseif(str[(len+z[len])%cnt]<str[z[len]%cnt]){yes[num[p]]=1;vv.push_back(num[p]);}}}for(intk=res-2;k>=0;k--){if(yes[out[k].x])swap(out[k+1],out[k]);elsebreak;}for(autox:vv)yes[x]=0;}intstack_p[S],stack_cnt[S],sid;charstack_s[S];voiddfs(intu){stack_p[sid]=u;stack_cnt[sid]=0;sid++;while(sid!=0){intu=stack_p[sid-1];cnt=stack_cnt[sid-1];if(cnt){str[cnt-1]=stack_s[sid-1];}sid--;if(st[u]){updateZ();output(u,st[u]);}for(inti=4;i>=0;i--){if(tr[u][i]){stack_p[sid]=tr[u][i];stack_cnt[sid]=cnt+1;stack_s[sid]='0'+i;sid++;}}}}voidsolve(){cin>>n;v.resize(n);memset(num,-1,sizeofnum);for(inti=0;i<n;i++){cin>>s;insert();}dfs(0);for(inti=0;i<res;i++){for(intj=0;j<out[i].y;j++)cout<<v[out[i].x];}}intmain(){init();solve();}
#include<bits/stdc++.h>usingnamespacestd;typedefpair<int,int>pii;#define x first#define y secondconstintN=5e5+100;intc[N][5];boolst[N][5];intn,m,x,y;ints1,s2,t1,t2;voidinit(){ios::sync_with_stdio(false);cin.tie(0);}intbfs(){queue<pair<pii,int>>q;stack<pair<pii,int>>sc;q.push({{s1,s2},0});while(q.size()||sc.size()){if(q.size()==0){while(sc.size()){q.push(sc.top());sc.pop();}}if(!q.size())break;autos=q.front();q.pop();if(s.x.x==t1&&s.x.y==t2){returns.y;}intx=s.x.x;inty=s.x.y;intpos=1;for(inti=1;i<=4;i++){if(c[y][i]==x){pos=i;break;}}if(st[y][pos])continue;st[y][pos]=1;q.push({{y,c[y][pos%4+1]},s.y});for(inti=2;i<=4;i++){intyy=(pos+i-1)%4+1;sc.push({{y,c[y][yy]},s.y+1});}}return-1;}voidsolve(){cin>>n;for(inti=1;i<=n;i++){for(intj=1;j<=4;j++){cin>>c[i][j];}}cin>>s1>>s2>>t1>>t2;cout<<bfs()<<"\n";}intmain(){init();solve();}