#include<bits/stdc++.h> using namespace std; int n,ans,vis[10010]; struct node{ string a,b,c,d; }s[10010],p[10010]; void dfs(int step){ if(step==6){ if(p[1].d==p[2].a&&p[2].d==p[3].a&&p[3].d==p[4].a&&p[4].d==p[1].a){ if(p[5].a==p[1].a&&p[5].d==p[2].d&&p[6].a==p[1].d&&p[6].d==p[3].d) ans++; } return; } for(int i=1;i<=n;i++){ if(!vis[i]){ p[step+1].a=s[i].a; p[step+1].b=s[i].b; p[step+1].c=s[i].c; p[step+1].d=s[i].d; vis[i]=1; dfs(step+1); vis[i]=0; } } return; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>s[i].a>>s[i].b>>s[i].c>>s[i].d; // cout<<i<<endl; } dfs(0); cout<<ans<<endl; return 0; }