#include<bits/stdc++.h> #define cst const #define csti const int #define pii pair<int,int> #define rep(i,l,r) for(int (i)=(l);(i)<=(r);++(i)) #define per(i,l,r) for(int (i)=(l);(i)>=(r);--(i)) #define eb emplace_back #define fi first #define se second #define il inline //#define int long long //#define LOL #define mkp make_pair #ifdef LOL csti inf=0x3f3f3f3f3f3f3f3f; #else csti inf=0x3f3f3f3f; #endif csti N=1e5+7,mod=1; il int max(csti x,csti y){ return x>y?x:y; } il int min(csti x,csti y){ return x<y?x:y; } il int abs_(csti x){ return x<0?-x:x; } using namespace std; string s[N][6]; map<string,int> mp; map<int,int> cnt1,cnt2; map<pii,int> cnt12; map<pair<string,string>,int> mpp; int a[N],b[N][5]; int n,cnt=0; il int solve(int x){ int s=0; } signed main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); //freopen("idioms.txt","r",stdin);//,freopen(".out","w",stdout); cin>>n; rep(i,1,n){ cin>>s[i][0]>>s[i][1]>>s[i][2]>>s[i][3]; rep(j,0,3){ if(mp.find(s[i][j])==mp.end()){ cnt++,mp[s[i][j]]=cnt; } a[i]=a[i]*10+mp[s[i][j]],b[i][j]=mp[s[i][j]]; //cout<<b[i][j]<<' '; }cnt1[mp[s[i][0]]]++,cnt2[mp[s[i][3]]]++; cnt1[mp[s[i][0]]]++,cnt2[mp[s[i][3]]]++; cnt12[mkp(mp[s[i][0]],mp[s[i][3]])]++; }//cout<<cnt12[mkp(5,1)]<<" ER\n"; int ans=0; rep(i,1,n){ rep(j,i+1,n){ // rep(k,0,3){ // cout<<b[i][k]<<' '<<b[j][k]<<'\n'; // } swap(b[j][0],b[j][3]); int k1=cnt12[mkp(b[j][0],b[i][0])]; int k2=cnt12[mkp(b[i][0],b[j][3])]; int k3=cnt12[mkp(b[i][3],b[j][0])]; int k4=cnt12[mkp(b[i][3],b[j][3])]; // rep(k,0,3){ // cout<<b[i][k]<<' '<<b[j][k]<<'\n'; // } // cout<<k1<<' '<<k2<<' '<<k3<<' '<<k4<<'\n'; if(b[i][3]==b[j][3]){ k2--; }if(b[i][3]==b[j][0]){ k1--; }if(b[i][0]==b[i][3]&&b[i][3]==b[j][3]){ k4--; }if(b[i][0]==b[i][3]&&b[i][3]==b[j][0]){ k4--; }ans+=k1*k2*k3*k4; swap(b[j][0],b[j][3]); } }cout<<ans; return 0; } /* 6 hua xiang niao yu ren mian tao hua hua qian yue xia yu chu jing ren yu miao tian xia xia li ba ren */