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