Definim distanța dintre două șiruri de caractere de aceeași lungime ca fiind numărul minim de caractere ce trebuie modificate (înlocuite fiecare cu câte un alt caracter) în primul șir pentru a obține al doilea șir. Vom nota distanța dintre șirurile și cu .
De exemplu, abcaaa (înlocuim caracterul b cu a, respectiv caracterul c cu a), iar ABCabc (literele mici se consideră diferite de cele mari).
Definim o subsecvență a unui șir de caractere ca fiind un șir format din caractere de pe poziții consecutive din . Considerăm două subsecvențe ca fiind distincte dacă încep sau se termină la poziții diferite. Vom nota cu subsecvența formată din caracterele indexate de la la ale șirului . Șirurile se indexează de la . Exemplu: pentru șirul abc subsecvențele sunt a, b, c, ab, bc, abc, iar pentru șirul aa acestea sunt a, a, aa.
Cerință
Se dă un șir de caractere , care poate conține doar litere mici și mari ale alfabetului englez (de la a la z și de la A la Z). Pentru toate perechile neordonate de subsecvențe distincte ale șirului care au lungimi egale, vrem să calculăm distanța dintre ele și să afișăm suma acestora .
Formal, se cere suma valorilor , pentru toți indicii , , , cu , . reprezintă lungimea șirului , care este indexat de la .
Date de intrare
Pe singura linie a fișierului sdistante.in este șirul dat, .
Date de ieșire
Se va afișa pe singurul rând al fișierului sdistante.out un număr întreg reprezentând suma distanțelor, .
Restricții și precizări
- , unde este lungimea șirului .
- Pentru puncte, , conține doar litere mici.
- Pentru alte 5 puncte, , conține doar caracterele
așib. - Pentru alte 15 puncte, , conține doar litere mici.
- Pentru alte 6 puncte, , conține doar caracterele
așib. - Pentru alte 30 puncte, , conține doar litere mici.
- Pentru alte 5 puncte, , conține doar caracterele
așib. - Pentru alte 4 puncte, , conține doar litere mici.
- Pentru alte 6 puncte, , conține doar caracterele
așib. - Pentru alte 18 puncte, fără restricții suplimentare.
Exemplul 1
sdistante.in
abc
sdistante.out
5
Explicație
abacbcabbc
Exemplul 2
sdistante.in
aab
sdistante.out
3
Explicație
aaababaaab
Exemplul 3
sdistante.in
ABa
sdistante.out
5
Explicație
ABAaBaABBa
Exemplul 4
sdistante.in
aaaaabbbaaaa
sdistante.out
480
Exemplul 5
sdistante.in
abcdefghizabcdefghiz
sdistante.out
7095