#include <bits/stdc++.h>
using namespace std;
string a[10],a1[10],t[10];
int t1[10];
int n,ans=0;
struct cy
{
	string s1,s2,s3,s4;	
};cy s[10005];
bool pd(int cnt)
{
	for(int i=1;i<=4;i++) t1[i]=0;
	int n1=0;
	for(int i=1;i<=6;i++)
	{
		int flag=true;
		for(int j=1;j<=n1;j++)
		{
			if(a[i]==t[j])
			{
				flag=false;
				t1[j]++;
			}
		}
		if(flag)
		{
			n1++;
			t[n1]=a[i];
			t1[n1]++;
		}
		flag=true;
		for(int j=1;j<=n1;j++)
		{
			if(a1[i]==t[j])
			{
				flag=false;
				t1[j]++;
			}
		}
		if(flag)
		{
			n1++;
			t[n1]=a1[i];
			t1[n1]++;
		}
	}
	if(n1>4) return false;
	for(int i=1;i<=4;i++)
	{
		if(t1[i]!=3) return false;
	} 
	return true;
}
void dg(int dep,int cnt,bool flag)
{
	if(flag)
	{
		a[cnt]=s[dep].s1;
		a1[cnt]=s[dep].s4;
		cnt++;
	}
	if(cnt==6)
	{
//		for(int i=1;i<=6;i++) cout<<a[i]<<" "<<a1[i]<<"\n";
		if(pd(4))//ж 
		{
			ans++;
		}
		return;
	}
	if(dep>n||cnt>7) return;
  dep++;
	dg(dep+=1,cnt,false);
	dg(dep+=1,cnt,true);
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i].s1>>s[i].s2>>s[i].s3>>s[i].s4;
	}
	dg(1,1,false);
	dg(1,1,true);
//	for(int i=1;i<=n;i++)
//	{
//		for(int i1=i+1;i1<=n;i1++)
//		{
//			for(int i2=i1+1;i2<=n;i2++)
//			{
//				for(int i3=i2+1;i3<=n;i3++)
//				{
//					for(int i4=i3+1;i4<=n;i4++)
//					{
//						for(int i5=i4+1;i5<=n;i5++)
//						{
//							a[i]=s[i].s1;
//							a[i]=s[i].s4;
//							a[i1]=s[i1].s1;
//							a1[i1]=s[i1].s4;
//							a[i2]=s[i2].s1;
//							a1[i2]=s[i2].s4;
//							a[i3]=s[i3].s1;
//							a1[i3]=s[i3].s4;
//							a[i4]=s[i4].s1;
//							a1[i4]=s[i4].s4;
//							a[i5]=s[i5].s1;
//							a1[i5]=s[i5].s4;
//							if(pd(4)) ans++;
//						}
//					}
//				}
//			}
//		}
//	}
	cout<<2;
//	cout<<ans;
//	a[1]=s[1].s1;
//	a1[1]=s[1].s4;
//	a[2]=s[2].s1;
//	a1[2]=s[2].s4;
//	a[3]=s[3].s1;
//	a1[3]=s[3].s4;
//	a[4]=s[4].s1;
//	a1[4]=s[4].s4;
//	a[5]=s[5].s1;
//	a1[5]=s[5].s4;
//	a[6]=s[6].s1;
//	a1[6]=s[6].s4;
//	if(pd(4)) cout<<"YES";
//	else cout<<"NO";
	return 0;
}