#include <bits/stdc++.h>
using namespace std;
struct amulet {
  char a, b, c, d;
};
int main() {
  int n, pil = 0;
  cin >> n;
  string s, s1, s2;
  amulet v[n];
  for (int c = 0; c < n; c++) {
    cin >> s >> s1;
    if (c != n - 1) cin >> s2;
    v[c].a = s[0];
    v[c].b = s[1];
    v[c].c = s1[0];
    v[c].d = s1[1];
  }
  for (int k = 0; k < n; k++) {
    if (v[k].a == '0' && v[k].b == '0' && v[k].c == '0' && v[k].d == '0')
      continue;
    else
      pil++;
    for (int c = k + 1; c < n; c++) {
      if (v[k].a == v[c].a && v[k].b == v[c].b && v[k].c == v[c].c &&
          v[k].d == v[c].d) {
        v[c].a = '0';
        v[c].b = '0';
        v[c].c = '0';
        v[c].d = '0';
        continue;
      }
      if (v[k].a == v[c].c && v[k].b == v[c].a && v[k].c == v[c].d &&
          v[k].d == v[c].b) {
        v[c].a = '0';
        v[c].b = '0';
        v[c].c = '0';
        v[c].d = '0';
        continue;
      }
      if (v[k].a == v[c].d && v[k].b == v[c].c && v[k].c == v[c].b &&
          v[k].d == v[c].a) {
        v[c].a = '0';
        v[c].b = '0';
        v[c].c = '0';
        v[c].d = '0';
        continue;
      }
      if (v[k].a == v[c].b && v[k].b == v[c].d && v[k].c == v[c].a &&
          v[k].d == v[c].c) {
        v[c].a = '0';
        v[c].b = '0';
        v[c].c = '0';
        v[c].d = '0';
        continue;
      }
    }
  }
  cout << pil;
}
