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