#include<bits/stdc++.h>
using namespace std;
int n,v[100010],cnt;
string s;
struct node{
	string ton,wei;
	int cnt1,cnt2;
}a[10010],b[10010];
void dfs(int i){
	if(i>n){
		int flag = 0,ans = 0;
		for(int i = 1;i<=n;i++){
			if(v[i]){
				b[i].ton  = a[i].ton;
				b[i].wei  = b[i].wei;
				ans++;
			} 
		}
		if(ans!=6)return;
		for(int i =1;i<=6;i++){
			for(int j = 1;j<=6;j++){
				if(b[i].ton ==b[j].ton &&i!=j)b[i].cnt1++;
				if(b[i].ton ==b[j].wei &&i!=j)b[i].cnt1++;
				if(b[i].wei ==b[j].ton &&i!=j)b[i].cnt2++;
				if(b[i].wei ==b[j].wei &&i!=j)b[i].cnt2++;
			} 
		}
//		for(int i = 1;i<=6;i++){
//			if(b[i].cnt1<2||b[i].cnt2<2)return;
//		}
		cnt++;
		return;
	}
	v[i] = 1;
	dfs(i+1);
	v[i] = 0;
	dfs(i+1);
	
} 
int main(){
	
	cin>>n;
	for(int i =1;i<=n;i++){
		for(int j  =1;j<=4;j++){
			cin>>s;
			if(j==1)a[i].ton = s;
			else if(j==4)a[i].wei = s;
		}
	}
	dfs(1);
	cout<<cnt;
	return 0;
}