Măricelu tocmai ce a descoperit cum să coloreze și să scrie. Părinții lui îi propun astfel următoarea problemă care să îl ajute să își aprofundeze noile descoperiri:
Ei îi dau un cuvânt reprezentat ca un șir de caractere format din litere mici ale alfabetului. El trebuie să coloreze toate caracterele într-un număr minim de culori diferite. După colorare, el poate schimba oricare caractere vecine din șir care sunt de culori diferite. Această operație poate fi efectuată de oricâte ori (inclusiv ). Obiectivul este să sorteze șirul de caractere în ordine crescătoare.
Măricelu trebuie să rezolve problema de la părinți cât mai repede!
Cerință
Cunoscând și se cere să se găsescă numărul minim de culori ce trebuie folosite pentru colorarea șirului, astfel încât să existe o secvență de operații, oricât de lungă, care îl sortează.
Date de intrare
Pe prima linie a fișierului de intrare ucf.in
se găsește , numărul de caractere.
Pe cea de-a doua linie, se găsește , șirul de caractere.
Date de ieșire
Pe prima linie a fișierului de ieșire ucf.out
se va găsi un singur număr întreg, numărul minim de culori folosite.
Restricții și precizări
- ;
- Pentru teste în valoare de de puncte, .
- Literele identice pot fi colorate cu aceeași culoare sau culori diferite.
Exemplul 1
ucf.in
9
abacbecfd
ucf.out
2
Explicație
Colorarea din primul exemplu poate fi : .
Aceasta poate fi sortată folosind schimbările: , , , , .
Exemplul 2
ucf.in
7
abcdedc
ucf.out
3