Ion este un lingvist pasionat. Recent el a descoperit un text scris într-o limbă necunoscută. Textul este scris pe mai multe linii şi este format din cuvinte scrise cu litere mici din alfabetul latin, separate prin spaţii sau/şi semne de punctuaţie (,:;.!?-
).
Ion a fost frapat că există multe similitudini între cuvintele din text. Fiind foarte riguros, Ion defineşte similitudinea a două cuvinte după cum urmează.
Fie şi două cuvinte. Cuvântul poate fi obţinut din cuvântul printr-o succesiune de operaţii elementare. Operaţiile elementare ce pot fi folosite sunt:
- ștergerea unui caracter
- inserarea unui caracter
- modificarea unui caracter
Definim similitudinea dintre şi ca fiind numărul minim de operaţii aplicate cuvântului pentru a ajunge la cuvântul .
Fie primul cuvânt din text. Începând cu putem construi lanţuri de -similitudine.
Un lanţ de -similitudine este o succesiune de cuvinte distincte din text cu următoarele proprietăţi:
- dacă cuvântul apare în lanţ înaintea cuvântului , atunci prima apariţie a lui în text precedă prima apariţie a lui în text;
- dacă şi sunt cuvinte consecutive în lanţ (în ordinea ) , atunci similitudinea dintre şi este ;
- lanţul este maximal (adică nu putem adăuga încă un cuvânt la sfârşitul acestui lanţ, astfel încât să fie respectate proprietăţile precedente).
Două lanțuri de -similitudine sunt diferite dacă au lungimi diferite sau dacă există o poziție unde cuvintele din cele două lanțuri sunt diferite.
Cerinţă
Scrieţi un program care să determine numărul de lanţuri de -similitudine care încep cu .
Date de intrare
Fişierul de intrare lant.in
conţine pe prima linie valoarea . Pe următoarele linii se află textul dat.
Date de ieşire
Fişierul de ieşire lant.out
va conţine o singură linie pe care va fi scris numărul de lanţuri de -similitudine care încep cu .
Restricţii
- Lungimea unei linii din text nu depăşeşte de caractere.
- Lungimea unui cuvânt nu depăşeşte de caractere.
- Numărul total de cuvinte .
- Pentru datele de test, numărul de lanţuri de -similitudine care încep cu va fi .
- Enunțul a fost modificat
Exemplu
lant.in
5
ana are mere, banane,
pere si castane.
lant.out
6
Explicații
Lanţurile de -similitudine care se pot forma sunt:
ana are mere pere
ana are pere
ana are banane castane
ana are si
ana banane castane
ana si