#include <bits/stdc++.h> using namespace std; struct node { string h1, h4; string cy; }; node chengyu[10001]; map<string, vector<node> > h1mp; map<pair<string, string>, vector<node> > h1h4mp; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { string s1, s2, s3, s4; cin >> s1 >> s2 >> s3 >> s4; chengyu[i].h1 = s1; chengyu[i].h4 = s4; chengyu[i].cy = s1 + s2 + s3 + s4; h1mp[s1].push_back(chengyu[i]); h1h4mp[ { s1, s4 } ].push_back(chengyu[i]); } int ans = 0; for (int i = 1; i <= n; i++) { node s1 = chengyu[i]; for (node s2 : h1mp[s1.h4]) { if (s2.cy == s1.cy) { continue; } for (node s3 : h1mp[s2.h4]) { if (s3.cy == s2.cy || s3.cy == s1.cy) { continue; } for (node s4 : h1h4mp[ { s3.h4, s1.h1 } ]) { if (s4.cy == s3.cy || s4.cy == s2.cy || s4.cy == s1.cy) { continue; } for (node s5 : h1h4mp[ { s1.h1, s3.h1 } ]) { if (s5.cy == s4.cy || s5.cy == s3.cy || s5.cy == s2.cy || s5.cy == s1.cy) { continue; } for (node s6 : h1h4mp[ { s2.h1, s4.h1 } ]) { if (s6.cy == s5.cy || s6.cy == s4.cy || s6.cy == s3.cy || s6.cy == s2.cy || s6.cy == s1.cy) { continue; } ans++; } } } } } } cout << ans << endl; return 0; }