#include<iostream>
using namespace std;
int t[6],n,a,flg,cnt,tmp,p[6][6][6][6][6][6];
string moji;
void init(){
  if(a==6){
    p[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]]=0;
  }else{
    for(int i=0;i<6;i++){
      t[a]=i;
      a++;
      init();
      a--;
    }
  }
}
int change(){
  if(moji=="Red"){
    return 0;
  }else if(moji=="Yellow"){
    return 1;
  }else if(moji=="Blue"){
    return 2;
  }else if(moji=="Magenta"){
    return 3;
  }else if(moji=="Green"){
    return 4;
  }else{
    return 5;
  }
}
void mov(int z){
  for(int j=0;j<4;j++){
    tmp=t[0]; t[0]=t[2]; t[2]=t[5]; t[5]=t[3]; t[3]=tmp;
    for(int k=0;k<3;k++){
      tmp=t[0]; t[0]=t[4]; t[4]=t[5]; t[5]=t[1]; t[1]=tmp;
      if(t[0]==z){
    //cout<<t[4]<<endl<<t[3]<<t[0]<<t[2]<<t[5]<<endl<<t[1]<<endl;
    return;
      }
    }
  }
}
int main(){
  while(1){
    cin>>n;
    if(n==0)break;
    flg=cnt=a=0;
    init();
 
    for(int i=0;i<n;i++){
      for(int j=0;j<6;j++){
	cin>>moji;
	t[j]=change();
      }
      if(p[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]]==1){
	cnt++;
      }else{
	for(int j=0;j<6;j++){
	  mov(j);
	  for(int k=0;k<4;k++){
	    tmp=t[1];  t[1]=t[2];  t[2]=t[4];  t[4]=t[3];  t[3]=tmp;
	    p[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]]=1;
	  }
	  
	}
      }
    }
    cout<<cnt<<endl;
  }
  return 0;
}