#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
*/