Olimpia D’Info a găsit o placă gravată ce conţine mai multe cuvinte scrise cu semne grafice necunoscute, fiecare cuvânt fiind format din exact semne grafice. Studiind cu atenție cuvintele, a dedus că în scrierea acestora sunt utilizate semne grafice distincte şi a asociat câte o literă mică din alfabetul englez fiecărui semn. După asociere, a stabilit pentru fiecare semn o complexitate, scriind literele în ordinea crescătoare a complexităţilor pe care le-a stabilit anterior. Olimpia consideră că această "complexitate" este cel mai potrivit criteriu de ordonare lexicografică.
Cerinţă
Cunoscând ordinea semnelor și cuvintele de pe placă determinaţi:
- Numărul de cuvinte distincte existente pe placă.
- Şirul de cuvinte ordonat lexicografic, conform criteriului formulat de Olimpia.
Date de intrare
Fişierul de intrare zimeria.in
conţine:
- pe prima linie un numărul natural , reprezentând varianta cerinţei de rezolvare;
- pe a doua linie un număr natural reprezentând numărul de cuvinte de pe placă;
- pe a treia linie caractere, litere mici ale alfabetului englez, care reprezintă semnele codificate, în ordinea lexicografică a semnelor;
- pe fiecare din următoarele linii câte un cuvânt.
Date de ieşire
- Dacă valoarea lui este , atunci se va rezolva numai punctul 1 din cerinţă. În acest caz, fişierul de ieşire
zimeria.out
va conţine pe prima linie numărul de cuvinte distincte de pe placă. - Dacă valoarea lui este , atunci se va rezolva numai punctul 2 din cerinţă. În acest caz, fişierul de ieşire
zimeria.out
va conţine linii, pe fiecare linie câte un cuvânt în ordine lexicografică, conform complexităţii stabilite de către Olimpia.
Restricții și precizări
- ;
- din teste vor avea pe prima linie valoarea , iar restul de din teste vor avea pe prima linie valoarea .
Exemplul 1
zimeria.in
1
5
qwertyuiopas
reeet
wyuty
reeet
oiopp
oiopp
zimeria.out
3
Explicație
Placa conţine cuvinte distincte.
Exemplul 2
zimeria.in
2
5
qwertyuiopas
oiopp
reeet
wyuty
reeet
oiopp
zimeria.out
wyuty
reeet
reeet
oiopp
oiopp
Explicație
Ordonăm cuvintele și obținem wyuty
, reeet
, reeet
, oiopp
, oiopp
.