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

string data[10];

void revstr(string &str, string *target) {
  *target = "";

  for(int i = 1; i <= str.length(); i++) {
    *target += str[str.length()-i];
  }
}

string str[10];
bool flag[10];
int cnt;

bool isFix(int level) {
  for(int j = 0; j < 5; j++) {
    if(str[level][j] == str[j][level-5]) return false;
  }
  return true;
}

void rec(int level) {
  if(level == 0) {
    for(int i = 0; i < 10; i++) flag[i] = false;
  }
  if(level == 10) {
    cnt++;
    return;
  }

  for(int i = 0; i < 10; i++) {
    if(!flag[i]) {
      flag[i] = true;
      str[level] = data[i];
      if(level < 5) {
	rec(level+1);
      } else if(level >= 5 && isFix(level)) {
	rec(level+1);
	flag[i] = false;
	return;
      }
      revstr(data[i], &str[level]);
      if(str[level] != data[i]) {
	if(level < 5) {
	  rec(level+1);
	} else if(level >= 5 && isFix(level)) {
	  rec(level+1);
	  flag[i] = false;
	  return;
	}
      }
      flag[i] = false;
    }
  }
}

int main() {
  while(1) {
    for(int i = 0; i < 10; i++) {
      cin >> data[i];
      if(data[i] == "END") return 0;
    }
    cnt = 0;
    rec(0);
    cout << cnt/8 << endl;
  }
}