#include<bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

struct {
	string x, y;
	int n;
} a[10005];
set<string> sr;
map<string, int> mp;
vector<pii> v[10005];

signed main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		string s1, s2;
		cin >> s1 >> s2 >> s2 >> s2;
		a[i] = {s1, s2, i};
		sr.insert(s1);
		sr.insert(s2);
	}
	int dc = 0;
	for (string s: sr) mp[s] = dc++;
	for (int i = 0; i < n; i++) v[mp[a[i].x]].emplace_back(mp[a[i].y], a[i].n);
	int cnt = 0;
	for (int i = 0; i < 10000; i++)
		for (auto fj: v[i]) {
			int j = fj.first, w1 = fj.second;
			for (auto fk: v[j]) {
				int k = fk.first, w2 = fk.second;
				if (w2 == w1) continue;
				for (auto fl : v[k]) {
					int l = fl.first, w3 = fl.second;
					if (w3 == w1 or w3 == w2) continue;
					for (auto fo: v[i]) {
						int o = fo.first, w4 = fo.second;
						if (w4 == w1 or w4 == w2 or w4 == w3) continue;
						if (o != k) continue;
						for (auto fp: v[j]) {
							int p = fp.first, w5 = fp.second;
							if (w5 == w1 or w5 == w2 or w5 == w3 or w5 == w4) continue;
							if (p != l) continue;
							for (auto fq: v[l]) {
								int q = fq.first, w6 = fq.second;
								if (w6 == w1 or w6 == w2 or w6 == w3 or w6 == w4 or w6 == w5) continue;
								if (q != i) continue;
								cnt++;
							}
						}
					}
				}
			}
		}
	cout << cnt;
}