#include <bits/stdc++.h> #define ll long long #define endl '\n' using namespace std; struct tDot { string s[4]; }t[10010]; int n; bool check(int b1,int b2,int b3,int b4) { string s1,s2,s3,s4; s1=t[b4].s[0]; s2=t[b3].s[0]; s3=t[b2].s[0]; s4=t[b1].s[0]; bool f=false; for (int i=1;i<=n;i++) { if (i==b1 || i==b2 || i==b3 || i==b4) { continue; } if (t[i].s[0]==s1 && t[i].s[1]==s2 && t[i].s[2]==s3 && t[i].s[3]==s4) { // cout << i <<endl; f=true; break; } } if (!f) { return false; } s1=t[b1].s[3]; s2=t[b2].s[3]; s3=t[b3].s[3]; s4=t[b4].s[3]; f=false; for (int i=1;i<=n;i++) { if (i==b1 || i==b2 || i==b3 || i==b4) { continue; } if (t[i].s[0]==s1 && t[i].s[1]==s2 && t[i].s[2]==s3 && t[i].s[3]==s4) { // cout << i <<endl; f=true; break; } } if (!f) { return false; } s1=t[b1].s[3]; s2=t[b2].s[2]; s3=t[b3].s[1]; s4=t[b4].s[0]; f=false; for (int i=1;i<=n;i++) { if (i==b1 || i==b2 || i==b3 || i==b4) { continue; } if (t[i].s[0]==s1 && t[i].s[1]==s2 && t[i].s[2]==s3 && t[i].s[3]==s4) { // cout << i <<endl; f=true; break; } } if (!f) { return false; } s1=t[b1].s[0]; s2=t[b2].s[1]; s3=t[b3].s[2]; s4=t[b4].s[3]; f=false; for (int i=1;i<=n;i++) { if (i==b1 || i==b2 || i==b3 || i==b4) { continue; } if (t[i].s[0]==s1 && t[i].s[1]==s2 && t[i].s[2]==s3 && t[i].s[3]==s4) { // cout << i <<endl; f=true; break; } } if (!f) { return false; } return true; } int main() { cin >> n; for (int i=1;i<=n;i++) { cin >> t[i].s[0] >> t[i].s[1] >> t[i].s[2] >> t[i].s[3]; } ll sum=0; for (int i=1;i+3<=n;i++) { for (int j=i+1;j+2<=n;j++) { for (int k=j+1;k+1<=n;k++) { for (int h=k+1;h<=n;h++) { if (check(i,j,k,h)) { sum++; } } } } } cout << sum; return 0; }