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

using namespace std;

int main(){

	int n;
	while(cin>>n&&n!=0){
		string str;
		vector<vector<string> > vvs;
		for(int i = 0; i < n; i++){
			vector<string> vs;
			for(int j = 0; j < 6; j++){
				cin>>str;
				vs.push_back(str);
			}
			vvs.push_back(vs);
		}
		bool f=false;
		set<map<string,set<string> > > smsss;
		// ツ重ツ閉。ツつキツづゥツ姪堋づーツ探ツつキ
		for(int i = 0; i < n; i++){
//			for(int j = i+1; j < n; j++){
			vector<string> &v1=vvs[i];
			//				vector<string> &v2=vvs[j];
			
			map<string,set<string> > msss;
			
			for(int k = 0; k < 6; k++){
				if(k==0){
					msss[v1[k]].insert(v1[1]);
					msss[v1[k]].insert(v1[2]);
					msss[v1[k]].insert(v1[3]);
					msss[v1[k]].insert(v1[4]);
				}
				else if(k==1){
					msss[v1[k]].insert(v1[0]);
					msss[v1[k]].insert(v1[2]);
					msss[v1[k]].insert(v1[3]);
					msss[v1[k]].insert(v1[5]);
				}
				else if(k==2){
					msss[v1[k]].insert(v1[0]);
					msss[v1[k]].insert(v1[5]);
					msss[v1[k]].insert(v1[1]);
					msss[v1[k]].insert(v1[4]);
				}
				else if(k==3){
					msss[v1[k]].insert(v1[0]);
					msss[v1[k]].insert(v1[5]);
					msss[v1[k]].insert(v1[1]);
					msss[v1[k]].insert(v1[4]);
				}
				else if(k==4){
					msss[v1[k]].insert(v1[0]);
					msss[v1[k]].insert(v1[5]);
					msss[v1[k]].insert(v1[3]);
					msss[v1[k]].insert(v1[2]);
				}
				else if(k==5){
					msss[v1[k]].insert(v1[1]);
					msss[v1[k]].insert(v1[4]);
					msss[v1[k]].insert(v1[3]);
					msss[v1[k]].insert(v1[2]);
				}
			}
			smsss.insert(msss);
		}
		cout<<n-smsss.size()<<endl;
	}
	
	return 0;
}