#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);
	}
}