#include <bits/stdc++.h> using namespace std; typedef long long ll; ll ans = 0; int n; struct Stu { string t1, t2, t3, t4; }s[100005]; string t[100005]; bool cmp(Stu a, Stu b) { return a.t1 < b.t1; } int main() { //freopen("idioms.txt", "r", stdin); cin >> n; for (int i = 1; i <= n; ++i) { cin >> s[i].t1 >> s[i].t2 >> s[i].t3 >> s[i].t4; t[i] = s[i].t1; } sort(t + 1, t + n + 1); sort(s + 1, s + n + 1, cmp); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { if (i == j) continue; string A = s[i].t1, B = s[i].t4, C = s[j].t1, D = s[j].t4; int BD = 0, CA = 0, BC = 0, DA = 0; int p = lower_bound(t + 1, t + n + 1, B) - t; for (int k = p; k <= n; ++k) { if (s[k].t1 != B) break; if (s[k].t4 == D) BD++; if (s[k].t4 == C) BC++; } p = lower_bound(t + 1, t + n + 1, C) - t; for (int k = p; k <= n; ++k) { if (s[k].t1 != C) break; if (s[k].t4 == A) CA++; } p = lower_bound(t + 1, t + n + 1, D) - t; for (int k = p; k <= n; ++k) { if (s[k].t1 != D) break; if (s[k].t4 == A) DA++; } // if (A == "ren" && B == "hua" && C == "yu" && D == "xia") // { // cout << p << endl; // cout << BD << " " << CA << " " << BC << " " << DA << endl; // } ans += BD * CA * BC * DA; } } cout << ans << endl; return 0; }