#include <iostream>
#include <string>
using namespace std;

int data[30][6];

bool judge(int);

main(){
  string in;
  int n;
  while(1){
    cin >> n;
    if(n==0) break;
    int count=0;
    for(int i=0;i<n;i++){
      for(int j=0;j<6;j++){
	cin >> in;
	if(in=="Red") data[i][j]=1;
	if(in=="Yellow") data[i][j]=2;
	if(in=="Blue") data[i][j]=3;
	if(in=="Magenta") data[i][j]=4;
	if(in=="Green") data[i][j]=5;
	if(in=="Cyan") data[i][j]=6;
      }
      if(judge(i)) count++;
    }
    int ans=n-count;
    if(ans<0) ans=0;
    cout << ans << endl;
  }
  return 0;
}

bool judge(int n){
  if(n==0) return true;
  int tmp[6];
  for(int i=0;i<6;i++){
    tmp[i]=data[n][i];
  }
  for(int i=0;i<n;i++){
    for(int j=0;j<4;j++){
      for(int k=0;k<4;k++){
	if(tmp[0]==data[i][0] && tmp[1]==data[i][1] && tmp[2]==data[i][2] && tmp[3]==data[i][3] && tmp[4]==data[i][4] && tmp[5]==data[i][5]) return false;
	int tt[6];
	for(int l=0;l<6;l++){
	  tt[l]=tmp[l];
	}
	tt[0]=tmp[1];
	tt[1]=tmp[5];
	tt[2]=tmp[2];
	tt[3]=tmp[3];
	tt[4]=tmp[0];
	tt[5]=tmp[4];
	for(int l=0;l<6;l++){
	  tmp[l]=tt[l];
	}
      }
      int t[6];
      for(int k=0;k<6;k++){
	t[k]=tmp[k];
      }
      t[0]=tmp[3];
      t[1]=tmp[1];
      t[2]=tmp[0];
      t[3]=tmp[5];
      t[4]=tmp[4];
      t[5]=tmp[2];
      for(int k=0;k<6;k++){
	tmp[k]=t[k];
      }
    }
  }
  return true;
}