#include <bits/stdc++.h>
using namespace std;
template <class T>
void debug(T begin, T end) {
  for (T i = begin; i != end; ++i) cerr << *i << " ";
  cerr << endl;
}
inline bool valid(int x, int y, int W, int H) {
  return (x >= 0 && y >= 0 && x < W && y < H);
}
const int INF = 100000000;
const double EPS = 1e-8;
const int MOD = 1000000007;
int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};
string s[10];
int lat[10][5];
int grid[5][5];
bool symmetory[10];
int dfs(int p, vector<bool> used) {
  if (p < 5) {
    int res = 0;
    for (int i = 0; i < 10; i++)
      if (!used[i]) {
        used[i] = true;
        for (int j = (0); j < (int)(5); ++j) grid[j][p] = lat[i][j] ^ 1;
        res += dfs(p + 1, used);
        for (int j = (0); j < (int)(5); ++j) grid[4 - j][p] = lat[i][j] ^ 1;
        res += dfs(p + 1, used);
        used[i] = false;
      }
    return res;
  } else if (p < 10) {
    int res = 0;
    for (int i = 0; i < 10; i++)
      if (!used[i]) {
        used[i] = true;
        bool ok = true;
        for (int j = (0); j < (int)(5); ++j)
          if (grid[p - 5][j] != lat[i][j]) ok = false;
        if (ok) res += dfs(p + 1, used);
        ok = true;
        for (int j = (0); j < (int)(5); ++j)
          if (grid[p - 5][j] != lat[i][4 - j]) ok = false;
        if (ok) res += dfs(p + 1, used);
        used[i] = false;
      }
    return res;
  } else {
    return 1;
  }
}
int main() {
  while (cin >> s[0]) {
    if (s[0] == "END") break;
    for (int i = (0); i < (int)(9); ++i) cin >> s[i + 1];
    for (int i = (0); i < (int)(10); ++i) {
      string t = s[i];
      reverse(t.begin(), t.end());
      symmetory[i] = (s[i] == t);
    }
    for (int i = (0); i < (int)(10); ++i)
      for (int j = (0); j < (int)(5); ++j) lat[i][j] = s[i][j] - '0';
    vector<bool> used(10);
    cout << dfs(0, used) / 64 << endl;
  }
  return 0;
}
