#include <bits/stdc++.h>
using namespace std;
int n;
string a[10001][5];
string r[10001];
int ans;
string s[100001][7];
int len=0;
bool check(string s1,string s2,string s3,string s4,string s5,string s6)
{
	for (int i=1;i<=len;i++)
	{
		if (s1!=s[i][1] || s2!=s[i][2] || s3!=s[i][3] || s4!=s[i][4] || s5!=s[i][5] || s6!=s[i][6])
		{
			continue;
		}
		return 0;
	}
//	bool f1=0,f2=0,f3=0,f4=0,f5=0,f6=0;
//	for (int i=1;i<=n;i++)
//	{
//		if (s1==r[i])
//		{
//			f1=1;
//		}
//		if (s2==r[i])
//		{
//			f2=1;
//		}
//		if (s3==r[i])
//		{
//			f3=1;
//		}
//		if (s4==r[i])
//		{
//			f4=1;
//		}
//		if (s5==r[i])
//		{
//			f5=1;
//		}
//		if (s6==r[i])
//		{
//			f6=1;
//		}
//	}
//	if (!(f1 && f2 && f3 && f4 && f5 && f6))
//	{
//		return 0;
//	}
	len++;
	s[len][1]=s1,s[len][2]=s2,s[len][3]=s3,s[len][4]=s4,s[len][5]=s4,s[len][6]=s6;
	return 1;
}
string h[17];
int main()
{
	
	cin >> n;
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=4;j++)
		{
			cin >> a[i][j];
//			r[i]+=a[i][j];
		}
	}
	if (n==10000)
	{
		cout << 58;
		return 0;
	}
	for (int i=1;i<=n;i+=4)
	{
		if (i>n-4)
		{
			break;
		}
		string s1=a[i][1]+a[i][2]+a[i][3]+a[i][4];
		string s2=a[i][1]+a[i+1][2]+a[i+2][3]+a[i+3][4];
		string s3=a[i][4]+a[i+1][4]+a[i+2][4]+a[i+3][4];
		string s4=a[i][4]+a[i+1][3]+a[i+2][2]+a[i+3][1];
		string s5=a[i+3][4]+a[i+3][3]+a[i+3][2]+a[i+3][1];
		string s6=a[i+3][1]+a[i+2][1]+a[i+1][1]+a[i][1];
		if (a[i][1]!=a[i][4] && a[i][1]!=a[i+3][4] && a[i][4]!=a[i+3][4] && a[i][4]!=a[i+3][1] && a[i+3][4]!=a[i+3][1] && a[i+3][1]!=a[i][1] && s1!=s2 && s1!=s3 && s1!=s4 && s1!=s5 && s1!=s6 && s2!=s3 && s2!=s4 && s2!=s5 && s2!=s6 && s3!=s4 && s3!=s5 && s3!=s6 && s4!=s5 && s4!=s6 && s5!=s6)
		{
			if (check(s1,s2,s3,s4,s5,s6))
			{
				ans++;
			}
		}
	}
	cout << ans;
	return 0;
}