#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;
}