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, abc
aaa
(înlocuim caracterul b
cu a
, respectiv caracterul c
cu a
), iar ABC
abc
(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
a
b
a
c
b
c
ab
bc
Exemplul 2
sdistante.in
aab
sdistante.out
3
Explicație
a
a
a
b
a
b
aa
ab
Exemplul 3
sdistante.in
ABa
sdistante.out
5
Explicație
A
B
A
a
B
a
AB
Ba
Exemplul 4
sdistante.in
aaaaabbbaaaa
sdistante.out
480
Exemplul 5
sdistante.in
abcdefghizabcdefghiz
sdistante.out
7095