#include <iostream>
#include <vector>
#include <algorithm>
#include<string>

using namespace std;


class Dice{
private:
	int yoko;
	int tate;
	int round;

public:
	string face[3][4];

	string getFace(int i,int j)const{
		return face[i][j];
	}

	Dice(vector<string> &v){
		init();
		face[1][1]=v[0];
		face[2][1]=v[1];
		face[1][2]=v[2];
		face[1][0]=v[3];
		face[0][1]=v[4];
		face[1][3]=v[5];
	}

	void init(){
		for(int i = 0; i < 3; i++){
			for(int j = 0; j < 4; j++){
				face[i][j]="";
			}
		}
		yoko=0;
		tate=0;
		round=0;
	}

	void rotate(){
		if(round<4){
			string tmp = face[2][1];
			face[2][1]=face[1][2];
			face[1][2]=face[0][1];
			face[0][1]=face[1][0];
			face[1][0]=tmp;
			round++;
		}
		if(round>=4){
			round=0;
			// àÇÁÄ«½çA¡ÌXbgðñ]³¹é
			if(yoko<4){
				string tmp = face[1][3];
				for(int i = 2; i >= 0; i--){
					face[1][i+1]=face[1][i];
				}
				face[1][0]=tmp;
				yoko++;
			}
			// àÇÁÄ«½çAcÌXbgðñ]³¹é
			if(yoko>=4){
				if(tate<4){
					tate++;
					string tmp = face[1][3];
					face[1][3]=face[0][1];
					for(int i = 0; i < 2; i++){
						face[i][1]=face[i+1][1];
					}
					face[2][1]=tmp;
				}
				if(tate>=4){
					round=0;
					tate=0;
					yoko=0;
				}
			}
		}
	};
};

int main(){

	int n;
	while(cin>>n&&n!=0){
		vector<Dice> ds;
		for(int i = 0; i < n; i++){
			vector<string> v;
			for(int j = 0; j < 6; j++){
				string str;
				cin>>str;
				v.push_back(str);
			}
			ds.push_back(Dice(v));
		}

		vector<Dice> used;
		used.push_back(ds[0]);
		for(int i = 1; i < n; i++){
			bool t=false;
			// ÇêðÝé©
			bool f=false;
			for(int j = 0; j < used.size(); j++){
				// ÇÌûü©
				for(int k = 0; k < 28; k++){
					// ½ÄÆæ±
					for(int l = 0; l < 3; l++){
						for(int m = 0; m < 4; m++){
							if(used[j].face[l][m]!=ds[i].face[l][m]){
								t=true;
								break;
							}
						}
						if(t)
							break;
					}
					if(!t){
						f=true;
					}
					//if(k==3){
					//	cout<<endl;
					//}
					used[j].rotate();
					t=false;
				}
				// àµÇÌûüÅàêvµÈ©Á½çAXgÉÁ¦é
	/*			for(int l = 0; l < 3; l++){
					for(int k = 0; k < 4; k++){
						cout<<used[j].face[l][k]<<" ";
					}
					cout<<endl;
				}
				cout<<endl;*/

				if(f)
					break;
			}
			if(!f){
				used.push_back(ds[i]);
			}
		}
		cout<<n-used.size()<<endl;
	}

	return 0;
}