#include<bits/stdc++.h> using namespace std; int n,ans; bool vis[100010]; string str[7][5]; string s[10010][5]; map<string,vector<int> > ma; void dfs(int pos,int x){ if(x==7){ bool flag=1; if(str[5][4]!=str[3][1]){ flag=0; } if(str[6][4]!=str[3][4]){ flag=0; } if(flag){ ans++; } return; } if(x==6){ pos=1; } for(auto y:ma[s[pos][4]]){ if(!vis[y]){ vis[y]=1; str[x][1]=s[y][1];str[x][2]=s[y][2]; str[x][3]=s[y][3];str[x][4]=s[y][4]; dfs(y,x+1); vis[y]=0; } } return; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>s[i][1]>>s[i][2]>>s[i][3]>>s[i][4]; ma[s[i][1]].push_back(i); } for(int i=1;i<=n;i++){ dfs(i,1); } cout<<ans; return 0; }