#include<bits/stdc++.h>
using namespace std;
const int w=1e4+10;
struct be
{
	string be;
	string en;
}n[w];
int n2;
be a[7];
int ans=0;
void dfs(int dep)
{
	if(dep<=4&&dep>1&&a[dep].be!=a[dep-1].en) return;
	else if(dep==5)
	{
		if(a[5].be!=a[1].be||a[5].en!=a[2].en) return;
	}
	else if(dep==6)
	{
		if(a[6].be!=a[1].en||a[6].en!=a[3].en) return;
		else
		{
			ans++;
			exit(0);
		} 
	} 
	for(int i=1; i<=n2; i++)
	{
		a[dep+1].be=n[i].be;
		a[dep+1].en=n[i].en;
		dfs(dep+1); 
		a[dep+1].be="";
		a[dep+1].en="";
 }
}
int main()
{
	cin>>n2;
	int w=n2*4;
	int i=0;
	int s3=0;
    while(w--)
    {
    	s3++;
        string n3;
        cin>>n3;
		if(s3%4==1)
		{
		    i++;
		    n[i].be=n3;
		} 
		if(s3%4==0) 
		{
			n[i].en=n3;
		}
	}
	for(int j=1; j<=i; j++)
	{
		a[1].be=n[i].be;
		a[1].en=n[i].en;
		dfs(1);
		a[1].be="";
		a[1].en="";
	}
	cout<<ans;
return 0;
}