#include<iostream> #include<map> #include<vector> #define int long long using namespace std; int n; string a,b,c,d; map<pair<string,string> ,int>mp; vector<pair<string,string> > vec; map<pair<string,string>,int>nd; bool check(int x,int y){ nd.clear(); nd[vec[x]]++; nd[vec[y]]++; nd[make_pair(vec[x].first,vec[y].first)]++; nd[make_pair(vec[x].second,vec[y].second)]++; nd[make_pair(vec[x].second,vec[y].first)]++; nd[make_pair(vec[y].second,vec[x].first)]++; if( mp[vec[x]]<nd[vec[x]] or \ mp[vec[y]]<nd[vec[y]] or \ mp[make_pair(vec[x].first,vec[y].first)]<nd[make_pair(vec[x].first,vec[y].first)] or \ mp[make_pair(vec[x].second,vec[y].second)]<nd[make_pair(vec[x].second,vec[y].second)] or \ mp[make_pair(vec[x].second,vec[y].first)]<nd[make_pair(vec[x].second,vec[y].first)] or \ mp[make_pair(vec[y].second,vec[x].first)]<nd[make_pair(vec[y].second,vec[x].first)] \ ){ return false; } return true; } signed main(){ scanf("%lld",&n); for(int i = 1;i <= n;i++){ cin>>a>>b>>c>>d; mp[make_pair(a,d)]++; vec.push_back(make_pair(a,d)); } int cnt=0; for(int i = 0;i < vec.size();i++){ for(int j = i+1;j < vec.size();j++){ cnt+=check(i,j); } } cout<<cnt; return 0; }//except:30pts