#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