#include <iostream> #include <string> #include <bits/stdc++.h> using namespace std; int n, ans; const int N = 1e5 + 20; string s[N][10]; string p[N][10]; int vis[N]; string rec[10][2]; void dfs(int cnt) { if (cnt == 5) { int tmpl = 0, tmpr = 0, tmplr = 0; for (int i = 1; i <= n; i++) { if (vis[i]) continue ; if (rec[1][1] == p[i][1] && rec[2][2] == p[i][2] && rec[1][2] == p[i][1] && rec[3][2] == p[i][2]) tmplr++; if (rec[1][1] == p[i][1] && rec[2][2] == p[i][2]) tmpl++; if (rec[1][2] == p[i][1] && rec[3][2] == p[i][2]) tmpr++; } if (tmplr == 0) { ans += tmpl * tmpr; return ; } ans += tmpl * (tmpr - tmplr) + (tmpl - tmplr) * tmpr; return ; } if (cnt == 4) { for (int i = 1; i <= n; i++) { if (vis[i] || p[i][1] != rec[3][2] || p[i][2] != rec[1][1]) continue ; vis[i] = 1; rec[4][1] = p[i][1], rec[4][2] = p[i][2]; dfs(5); vis[i] = 0; } return ; } for (int i = 1; i <= n; i++) { if (vis[i] || p[i][1] != rec[cnt - 1][2]) continue ; vis[i] = 1; rec[cnt][1] = p[i][1], rec[cnt][2] = p[i][2]; dfs(cnt + 1); vis[i] = 0; } return ; } int main() { cin >> n; for (int i = 1; i <= n; i++) for (int j = 1; j <= 4; j++) cin >> s[i][j]; for (int i = 1; i <= n; i++) p[i][1] = s[i][1], p[i][2] = s[i][4]; for (int i = 1; i <= n; i++) { vis[i] = 1, rec[1][1] = p[i][1], rec[1][2] = p[i][2], dfs(2); vis[i] = 0; } cout << ans; return 0; }