#include<bits/stdc++.h> using namespace std; vector<int>edges[10000001]; int n,k,ls1,ls4,cnt,cnt1,ans,ans1,b[10000001]; string s1,s2,s3,s4; map<int,int>mp; inline void dfs(int left,int p,int from){ if(p==5){ if(left==from){ } return; } for(auto i:edges[left]){ if(!b[i]){ b[i]=1; dfs(i,p+1,from); b[i]=0; } } } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ cin>>s1>>s2>>s3>>s4; ls1=s1.size(),ls4=s4.size(),cnt=1,cnt1=1,ans=0,ans1=0; for(int j=0;j<=ls1-1;j++){ ans+=cnt*(s1[j]-'a'); cnt*=26; } for(int j=0;j<=ls4-1;j++){ ans1+=cnt1*(s1[j]-'a'); cnt1*=26; } edges[ans].push_back(ans1); mp[ans]=1; } for(auto i:mp){ dfs(i.first,1,i.first); } }