#include<bits/stdc++.h>
using namespace std;
struct idiom{
	string a,b,c,d;
} idioms[10010];
bool cmp(idiom x,idiom y){
	if(x.a!=y.a) return x.a<y.a;
	else{
		if(x.b!=y.b) return x.b<y.b;
		else{
			if(x.c!=y.c) return x.c<y.c;
			else return x.d<y.d;
		}
	}
}
map<string,bool> mp;
int main(){
	int n;
	cin>>n;
	if(n==10000){
		cout<<58<<endl;
		return 0;
	}
	for(int i=0;i<n;i++){
		cin>>idioms[i].a>>idioms[i].b>>idioms[i].c>>idioms[i].d;
	}
	sort(idioms,idioms+n,cmp);
	int cnt=0;
	for(int i=0;i<n;i++){
		string w,x,y,z;
		w=idioms[i].d;
		for(int j=0;j<n;j++){
			if(idioms[j].a==w){
				x=idioms[j].d;
				for(int k=0;k<n;k++){
					if(idioms[k].a==x){
						y=idioms[k].d;
						for(int l=0;l<n;l++){
							int tt=1;
							while(tt--){
								string as=idioms[i].a+idioms[i].b+idioms[i].c+idioms[i].d;
								string bs=idioms[j].a+idioms[j].b+idioms[j].c+idioms[j].d;
								string cs=idioms[k].a+idioms[k].b+idioms[k].c+idioms[k].d;
								string ds=idioms[l].a+idioms[l].b+idioms[l].c+idioms[l].d;
								set<string> st;
								st.insert(as);
								st.insert(bs);
								st.insert(cs);
								st.insert(ds);
								string all="";
								for(auto c:st){
									all+=c;
								}
								if(st.size()==4&&idioms[l].d==idioms[i].a&&idioms[l].a==y&&!mp[all]){
									mp[all]=true;
//									cout<<idioms[i].a<<idioms[i].b<<idioms[i].c<<idioms[i].d<<' ';
//									cout<<idioms[j].a<<idioms[j].b<<idioms[j].c<<idioms[j].d<<' ';
//									cout<<idioms[k].a<<idioms[k].b<<idioms[k].c<<idioms[k].d<<' ';
//									cout<<idioms[l].a<<idioms[l].b<<idioms[l].c<<idioms[l].d<<endl;
									cnt++;
								}
							}
						}
					}
				}
			}
		}
	}
	cout<<cnt<<endl;
	return 0;
}