#include<bits/stdc++.h>
using namespace std;
int n,ans,vis[10010];
struct node{
	string a,b,c,d;
}s[10010],p[10010];
void dfs(int step){
	if(step==6){
		if(p[1].d==p[2].a&&p[2].d==p[3].a&&p[3].d==p[4].a&&p[4].d==p[1].a){
			if(p[5].a==p[1].a&&p[5].d==p[2].d&&p[6].a==p[1].d&&p[6].d==p[3].d) ans++;
		}
		return;
	}
	for(int i=1;i<=n;i++){
		if(!vis[i]){
			p[step+1].a=s[i].a;
			p[step+1].b=s[i].b;
			p[step+1].c=s[i].c;
			p[step+1].d=s[i].d;
			vis[i]=1;
			dfs(step+1);
			vis[i]=0;
		}
	}
	return;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s[i].a>>s[i].b>>s[i].c>>s[i].d;
	//	cout<<i<<endl;
	}
	dfs(0);
	cout<<ans<<endl;
	return 0;
}