#include <iostream>
#include <cmath>

using namespace std;
void func(int);
bool Check(char,char);



char board[4][4][4];
char data[9][4];
bool used[9];

int cnt;

int main(){
  int n;

  string str;
  cin >> n;
  while(n){
    n--;

    for(int i=0;i<4;i++)
      for(int j=0;j<4;j++)
	for(int k=0;k<4;k++)
	  board[i][j][k]='X';


    for(int i=0;i<9;i++){
      used[i]=false;
      cin >> str;
      for(int j=0;j<4;j++){
	data[i][j]=str[j];
      }
    }

    cnt=0;
    func(0);
    cout << cnt << endl;

  }
  return 0;
}




const int dy[9]={1,1,1,2,2,2,3,3,3};
const int dx[9]={1,2,3,1,2,3,1,2,3};

void func(int d){
  if(d==9){
    cnt++;
    return;
  }
  
  int y=dy[d],x=dx[d];
  for(int id=0;id<9;id++){
    if(used[id])continue;
    used[id]=true;

    for(int i=0;i<4;i++){

      for(int j=0;j<4;j++)board[y][x][j]=data[id][(i+j)%4];
      bool r1=Check(board[y-1][x][2],board[y][x][0]);
      bool r2=Check(board[y][x-1][1],board[y][x][3]);
      if(r1==true&&r2==true) func(d+1);
      
    }
    used[id]=false;
  }
  

}

bool Check(char a,char b){
  if(a=='X'||b=='X') return true;
  return (abs(a-b) == abs('A'-'a'));
}