#include #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int ret = 0; vector> lefts, rights; vector copies; string line; while (getline(cin, line) && !line.empty()) { int count = 1; int start = line.find(':'); int bar = line.find('|'); string left = line.substr(start + 2, bar - start - 3); string right = line.substr(bar + 2); istringstream lss(left), rss(right); vector rv, lv; while (!rss.eof()) { int n; rss >> n; rv.push_back(n); } rights.push_back(rv); while (!lss.eof()) { int n; lss >> n; lv.push_back(n); } lefts.push_back(lv); copies.push_back(1); } for (int cn = 0; cn < copies.size(); cn++) { ret += copies[cn]; int n = cn; for (int ln : lefts[cn]) { for (int rn : rights[cn]) { if (ln == rn) { if (++n == copies.size()) goto end; copies[n] += copies[cn]; } } } end:; } cout << ret << '\n'; }