#include <iostream>
#include <vector>
#include <string.h>
#include <string>
using namespace std;

typedef vector<string> Dice;

void rotate_front(Dice& dice)
{
	string t = dice[0];
	dice[0] = dice[4];
	dice[4] = dice[5];
	dice[5] = dice[1];
	dice[1] = t;
}

void rotate_right(Dice& dice)
{
	string t = dice[0];
	dice[0] = dice[3];
	dice[3] = dice[5];
	dice[5] = dice[2];
	dice[2] = t;
}

void rotate_clock(Dice& dice)
{
	string t = dice[1];
	dice[1] = dice[2];
	dice[2] = dice[4];
	dice[4] = dice[3];
	dice[3] = t;
}

void rotate(Dice& dice, string top)
{
	for(int i=0; i<4; i++)
	{
		if(dice[0] == top) return;
		rotate_front(dice);
	}

	for(int i=0; i<4; i++)
	{
		if(dice[0] == top) return;
		rotate_right(dice);
	}
}

bool match(Dice d1, Dice d2)
{
	if(d1[0] != d2[0]) return false;
	if(d1[5] != d2[5]) return false;

	for(int i=0; i<4; i++)
	{
		bool is_match = true;
		for(int j=1; j<5; j++)
		{
			if(d1[j] != d2[j])
			{
				is_match = false;
				break;
			} 
		}
		if(is_match) return true;
		
		rotate_clock(d2);
	}

	return false;
}

int table[6];

int main()
{
	int T;
	string color;
	vector<Dice> dices;

	while(cin >> T, T)
	{
		dices = vector<Dice>(T);
		for(int t=0; t<T; t++)
		{
			for(int i=0; i<6; i++)
			{
				cin >> color;
				dices[t].push_back(color);
			}
			if(t != 0) rotate(dices[t], dices[0][0]);
		}

		int c = 0;
		for(int t=0; t<T; t++)
		{
			bool is_match = false;
			for(int i=0; i<t; i++)
			{
				if(match(dices[t], dices[i]))
				{
					is_match = true;
					break;
				}
			}

			if(!is_match) c++;
		}

		printf("%d\n", T-c);
	}
}