#include #include #include static struct Node { char name[4]; size_t parent; } tree[2048]; static size_t node(const char *name) { size_t i; for (i = 0; tree[i].name[0]; ++i) { if (strcmp(name, tree[i].name)) continue; return i; } strncpy(tree[i].name, name, sizeof(tree[i].name)); return i; } static size_t ancestors(size_t i) { size_t n = 0; while (i) { i = tree[i].parent; n++; } return n; } int main(void) { node("COM"); char parent[4], child[4]; while (EOF != scanf("%3s)%3s\n", parent, child)) { tree[node(child)].parent = node(parent); } size_t orbits = 0; for (size_t i = 0; tree[i].name[0]; ++i) { orbits += ancestors(i); } printf("%zu\n", orbits); }