Üzvlük İdarəetməsi
Peter, Agile Change Management (ACM) Inc.-də baş menecerdir. Burada hər bir işçi bir və ya bir neçə tapşırıq qrupunun üzvüdür. ACM çevik bir şirkət olduğundan, tapşırıq qrupları tez-tez yenidən təşkil olunur və üzvləri dəyişir. Bu səbəbdən, üzvlük idarəetməsi Peter üçün daimi bir problemə çevrilir.
Peter hər hansı bir dəyişiklik baş verdikdə üzvlük məlumatlarını yeniləyir. Məsələn, onun tərəfindən yazılmış aşağıdakı sətir Carol və Alice-in Dizayn Qrupunun üzvləri olduğunu göstərir:
design:carol,alice.
Burada nöqtədən əvvəlki ad qrupun adıdır və ondan sonrakı adlar isə qrupun üzvlərini göstərir.
Kiçik bir tapşırıq qrupu daha böyük bir qrupun tərkibinə daxil edilə bilər. Beləliklə, qrup adı başqa bir qrupun üzvü kimi görünə bilər. Məsələn:
development:alice,bob,design,eve.
Yuxarıdakı dizayn qrupunu açmaqla aşağıdakı üzvlük spesifikasiyasını əldə edirik ki, bu da orijinala bərabərdir:
development:alice,bob,carol,alice,eve.
Bu halda, alice iki dəfə təkrarlanır. Dublikatlardan birini çıxardıqda, aşağıdakı daha qısa spesifikasiyanı əldə edirik:
development:alice,bob,carol,eve.
Bu problemdə sizin vəzifəniz qrup spesifikasiyalarını nəzərə alaraq qrup üzvlərini müəyyən edən bir proqram yazmaqdır.
Qeyd edək ki, Peter-in spesifikasiyalarına dərin yuvalanmış qruplar daxil ola bilər. Məsələn, aşağıdakı halda, "one" qrupunda yalnız bir üzv, yəni dave var:
one:another.another:yetanother.yetanother:dave.
Giriş verilənləri
Giriş hər bir dataset ardıcıllığı üçün aşağıdakı formatdadır:
n group_1:member_{1,1},...,member_{1,m1}. ... group_i:member_{i,1},...,member_{i,mi}. ... group_n:member_{n,1},...,member_{n,mn}.
Birinci sətir n ədədini ehtiva edir, bu isə qrupların sayını təmsil edir və 100-dən çox olmayan müsbət tam ədəddir. Növbəti n sətirin hər biri bir qrupun üzvlük məlumatını ehtiva edir: group_i (1 ≤ i ≤ n) i-ci tapşırıq qrupunun adıdır və ondan sonra nöqtə (:) və sonra onun m_i üzvlərinin vergüllə (,) ayrılmış siyahısı və nöqtə (.) ilə bitən siyahısı gəlir.
Bu qrup adları qarşılıqlı olaraq fərqlidir. Hər bir m_i (1 ≤ i ≤ n) 1 ilə 10 arasında, daxil olmaqla, dəyişir. Bir üzv başqa bir qrup adıdırsa, o group_1, group_2, ..., və ya group_n-dən biridir. Əks halda, bu bir işçi adıdır.
Qruplarda dairəvi (və ya rekursiv) təriflər yoxdur. Siz m_i qrupunun üzv adlarının qarşılıqlı olaraq fərqli olduğunu qəbul edə bilərsiniz.
Hər bir qrup və ya işçi adı 1 ilə 15 arasında, daxil olmaqla, uzunluqda olan və kiçik hərflərdən ibarət olan boş olmayan bir simvol sətiridir.
Girişin sonu sıfır olan bir sətir ilə göstərilir.
Çıxış verilənləri
Hər bir dataset üçün, datasetin birinci qrupuna, yəni group_1-ə daxil olan işçilərin sayını bir sətirdə çıxarın. Çıxışda əlavə simvollar olmamalıdır.