#include<iostream>
using namespace std;
struct A{
	string s[6];
	void input(){
		for(int i=0;i<6;i++)cin>>s[i];
	}
	bool operator==(const A&a){
		for(int _=0;_<8;_++)
		{
			for(int __=0;__<4;__++)
			{
				bool flag=true;
				for(int i=0;i<6;i++)flag&=s[i]==a.s[i];
				if(flag)return true;
				string tmp=s[1];
				s[1]=s[2];
				s[2]=s[4];
				s[4]=s[3];
				s[3]=tmp;
			}
			if(_<4)
			{
				string tmp=s[0];
				s[0]=s[1];
				s[1]=s[5];
				s[5]=s[4];
				s[4]=tmp;
			}
			else
			{
				string tmp=s[0];
				s[0]=s[2];
				s[2]=s[5];
				s[5]=s[3];
				s[3]=tmp;
			}
		}
		return false;
	}
};
int N;
A a[30];
bool used[30];
main()
{
	while(cin>>N,N)
	{
		int ans=0;
		for(int i=0;i<N;i++)
		{
			a[i].input();
			used[i]=true;
			for(int j=0;j<i;j++)
			{
				if(used[j]&&a[j]==a[i])
				{
					used[i]=false;
					ans++;
					break;
				}
			}
		}
		cout<<ans<<endl;
	}
}

