#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double dbl;

int n, ans;
set<string> Ch; vector<string> ch;
map<pair<string, string>, int> id;
vector<pair<string, string>> idiom;
set<int> suf[4000];

int main(){
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> n;
	for (int i = 0; i < n; i++){
		string c1, c2, c3, c4;
		cin >> c1 >> c2 >> c3 >> c4;
		id[make_pair(c1, c4)]++;
		idiom.push_back({c1, c4});
		Ch.insert(c1); Ch.insert(c4);
	}
	for (string t : Ch) ch.push_back(t);
	for (int i = 0; i < n; i++){
		string c1, c4;
		tie(c1, c4) = idiom[i];
		int pc1, pc2;
		pc1 = lower_bound(ch.begin(), ch.end(), c1) - ch.begin();
		pc2 = lower_bound(ch.begin(), ch.end(), c4) - ch.begin();
		suf[pc1].insert(pc2);
	}
	for (int a = 0; a < ch.size(); a++){
		for (int b : suf[a]){
			for (int c : suf[b]){
				if (!id[make_pair(ch[a], ch[c])]) continue;
				for (int d : suf[c]){
					pair<string, string> l[6] = {make_pair(ch[b], ch[d]), \
										   make_pair(ch[d], ch[a]), \
										   make_pair(ch[c], ch[d]), \
										   make_pair(ch[a], ch[b]), \
										   make_pair(ch[b], ch[c]), \
										   make_pair(ch[a], ch[c])};
					sort(l, l+6);
					int cans = 1;
					int t[6];
					for (int i = 0; i < 6; i++){
						if (!i || l[i] != l[i-1]) t[i] = id[l[i]];
						else t[i] = t[i-1] - 1;
						cans *= t[i];
					}
					ans += cans;
				}
			}
		}
	}
	printf("%d\n", ans);
	return 0;
}