Spunem că două cuvinte rimează dacă se termină cu consoană și începând de la ultima vocală sunt identice sau se termină cu vocală și începând de la penultima vocală sunt identice. De exemplu: concret
rimează cu parchet
(cazul 1
), iar lopata
rimează cu bucata
(cazul 2
).
Cerința
Se dă o mulțime cu n
cuvinte distincte. Să se împartă în submulțimi de cuvinte cu proprietatea că oricare două cuvinte din aceeași submulțime rimează și oricare două cuvinte care rimează sunt în aceeași submulțime.
Date de intrare
Fișierul de intrare rime.in
conține pe prima linie numărul n
, iar pe următoarele linii cele n
cuvinte. Este posibil să existe mai multe cuvinte pe aceeași linie (caz în care cuvintele sunt separate prin spațiu, virgula (,
) sau punct virgula (;
) )
Date de ieșire
Fișierul de ieșire rime.out
va conține pe prima linie numărul C
de mulțimi determinate.
Următoarele C
linii conțin câte o mulțime. Cuvintele din aceeași mulțime sunt ordonate lexicografic și separate prin exact un spațiu, iar mulțimile sunt date în ordine lexicografică după primul cuvânt.
Restricții și precizări
1 ≤ n ≤ 500
;- cuvintele sunt format din cel mult
20
de litere din alfabetul englez; - toate liniile din fișierul de intrare conțin cel mult
255
caractere.
Exemplu:
rime.in
6 lopata, baiat parchet concret , bucata; apret
rime.out
3 apret concret parchet baiat bucata lopata