#include <bits/stdc++.h>
using namespace std;
struct node
{
	string h1, h4;
	string cy;
};
node chengyu[10001];
map<string, vector<node> > h1mp;
map<pair<string, string>, vector<node> > h1h4mp; 
int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		string s1, s2, s3, s4;
		cin >> s1 >> s2 >> s3 >> s4;
		chengyu[i].h1 = s1;
		chengyu[i].h4 = s4;
		chengyu[i].cy = s1 + s2 + s3 + s4;
		h1mp[s1].push_back(chengyu[i]);
		h1h4mp[ { s1, s4 } ].push_back(chengyu[i]);
	}
	int ans = 0; 
	for (int i = 1; i <= n; i++)
	{
		node s1 = chengyu[i];
	    for (node s2 : h1mp[s1.h4])
	    {
	    	if (s2.cy == s1.cy)
			{
			    continue;	
			}
	    	for (node s3 : h1mp[s2.h4])
	    	{
	    		if (s3.cy == s2.cy || s3.cy == s1.cy)
				{
					continue;
				}
	    		for (node s4 : h1h4mp[ { s3.h4, s1.h1 } ])
	    		{
	    			if (s4.cy == s3.cy || s4.cy == s2.cy || s4.cy == s1.cy)
	    			{
					    continue; 
					}
	    			for (node s5 : h1h4mp[ { s1.h1, s3.h1 } ]) 
	    			{
	    				if (s5.cy == s4.cy || s5.cy == s3.cy || s5.cy == s2.cy || s5.cy == s1.cy)
						{
							continue;
						}
	    				for (node s6 : h1h4mp[ { s2.h1, s4.h1 } ])
	    				{
	    					if (s6.cy == s5.cy || s6.cy == s4.cy || s6.cy == s3.cy || s6.cy == s2.cy || s6.cy == s1.cy)
							{
							    continue;
							}
	    					ans++;
						}
					}
				}
			}
		}
	} 
	cout << ans << endl;
	return 0;
}