#include<bits/stdc++.h> using namespace std; int n,v[100010],cnt; string s; struct node{ string ton,wei; int cnt1,cnt2; }a[10010],b[10010]; void dfs(int i){ if(i>n){ int flag = 0,ans = 0; for(int i = 1;i<=n;i++){ if(v[i]){ b[i].ton = a[i].ton; b[i].wei = b[i].wei; ans++; } } if(ans!=6)return; for(int i =1;i<=6;i++){ for(int j = 1;j<=6;j++){ if(b[i].ton ==b[j].ton &&i!=j)b[i].cnt1++; if(b[i].ton ==b[j].wei &&i!=j)b[i].cnt1++; if(b[i].wei ==b[j].ton &&i!=j)b[i].cnt2++; if(b[i].wei ==b[j].wei &&i!=j)b[i].cnt2++; } } // for(int i = 1;i<=6;i++){ // if(b[i].cnt1<2||b[i].cnt2<2)return; // } cnt++; return; } v[i] = 1; dfs(i+1); v[i] = 0; dfs(i+1); } int main(){ cin>>n; for(int i =1;i<=n;i++){ for(int j =1;j<=4;j++){ cin>>s; if(j==1)a[i].ton = s; else if(j==4)a[i].wei = s; } } dfs(1); cout<<cnt; return 0; }