#include<bits/stdc++.h> #define int long long using namespace std; struct idom{ string s1,s2,s3,s4; }idoms[100005]; int t; bool used[100005]; int find_idom(string start,string end,int pos){ for(int i=pos;i<=t;i++){ if(used[i]){ continue; } if(idoms[i].s1==start&&idoms[i].s4==end){ return i; } } return 0; } int main(){ cin>>t; for(int i=1;i<=t;i++){ cin>>idoms[i].s1>>idoms[i].s2>>idoms[i].s3>>idoms[i].s4; } int ans=0; string solve[5][5]; for(int i=1;i<=t;i++){ used[i]=true; solve[1][1]=idoms[i].s1; solve[1][2]=idoms[i].s2; solve[1][3]=idoms[i].s3; solve[1][4]=idoms[i].s4; for(int j=1;j<=t;j++){ if(j==i){ continue; } used[j]=true; solve[4][4]=idoms[j].s1; solve[4][3]=idoms[j].s2; solve[4][2]=idoms[j].s3; solve[4][1]=idoms[j].s4; int pos3=1; while(find_idom(solve[4][1],solve[1][1],pos3)!=0){ int k=find_idom(solve[4][1],solve[1][1],pos3); pos3=k+1; solve[3][1]=idoms[k].s2; solve[2][1]=idoms[k].s3; used[k]=true; int pos4=1; while(find_idom(solve[1][4],solve[4][4],pos4)!=0){ int l=find_idom(solve[1][4],solve[4][4],pos4); pos4=l+1; solve[2][4]=idoms[l].s2; solve[3][4]=idoms[l].s3; used[l]=true; int pos5=1; while(find_idom(solve[1][1],solve[4][4],pos5)!=0){ int m=find_idom(solve[1][1],solve[4][4],pos5); pos5=m+1; solve[2][2]=idoms[m].s2; solve[3][3]=idoms[m].s3; used[m]=true; int pos6=1; while(find_idom(solve[1][4],solve[4][1],pos6)!=0){ int n=find_idom(solve[1][4],solve[4][1],pos6); pos6=n+1; used[n]=true; solve[2][3]=idoms[n].s2; solve[3][2]=idoms[n].s3; for(int u=1;u<=4;u++){ for(int v=1;v<=4;v++){ cout<<solve[u][v]<<' '; } cout<<endl; } cout<<endl; ans++; } used[m]=false; } used[l]=false; } used[k]=false; } used[j]=false; } used[i]=false; } cout<<ans; return 0; }