Fie un șir de caractere de lungime indexat de la 1. Pe un astfel de șir se definește operația swap
: se alege un indice () și se interschimbă caracterele și .
Numărul norocos corespunzător unui șir este egal cu numărul minim de operații swap
ce trebuie efectuate succesiv pentru a obține cel puțin o subsecvență bingo
în șirul . Dacă subsecvența bingo
apare în șirul inițial, numărul norocos este egal cu .
Cerință
Se dă un număr natural și șiruri de caractere. Să se determine pentru fiecare șir dat (), numărul său norocos.
Date de intrare
Fișierul de intrare bingo.in
conține pe prima linie un număr natural nenul . Următoarele linii conțin fiecare câte un șir de caractere format doar din litere mici ale alfabetului englez.
Date de ieșire
Fișierul de ieșire bingo.out
conține numerele norocoase determinate pentru fiecare dintre cele șiruri date. Acestea se vor afișa fiecare pe câte un rând, în ordinea în care șirurile sunt date în fișierul de intrare.
Restricții și precizări
- ;
- , unde se notează cu numărul de caractere din șirul ;
- O subsecvență de lungime a unui șir de caractere reprezintă o succesiune de caractere aflate pe poziții consecutive în șirul .
- Se garantează că fiecare șir citit conține cel puțin o dată fiecare caracter din mulțimea ;
- Pentru puncte, ();
- Pentru de puncte, în fiecare șir () fiecare caracter din mulțimea apare exact o dată;
- Pentru puncte, și în fiecare șir () fiecare caracter din mulțimea apare de cel mult 10 ori;
- Pentru de puncte, nu există restricții suplimentare.
Exemplu
bingo.in
8
nbbigo
ibhpnogg
bihhhhhhhhngo
nbxgyoi
uobsioboisinosaogvnibn
hgibaisianiaosanbviaobi
ybingo
btgpntoipipqiamytoghoi
bingo.out
3
6
16
8
7
14
0
9
Explicație
Numărul norocos al primului șir citit este , iar o succesiune posibilă de operații este: .