Fie un șir de caractere de lungime format din litere mici ale alfabetului englez. Pentru un oarecare (), alegem poziții în care să tăiem șirul, rezultând șiruri, pe care le notăm cu , astfel:
Șirurile pot avea lungimi diferite.
Fie mulțimea caracterelor ce apar în . Spunem că o tăiere este echilibrată dacă --- adică fiecare dintre șirurile conține la fel de multe caractere distincte.
Cerință
Considerăm toate subsecvențele șirului și pentru fiecare calculăm numărul de moduri de a o tăia echilibrat (în cel puțin două bucăți). Să se afișeze suma rezultatelor pentru toate subsecvențele modulo .
Date de intrare
Fișierul de intrare sirag.in
conține pe prima linie un număr natural , lungimea lui . Pe a doua linie, se află șirul de caractere .
Date de ieșire
Pe prima linie a fișierului de ieșire sirag.out
se va scrie suma cerută modulo .
Restricții și precizări
# | Scor | Restricții |
---|---|---|
1 | 14 | |
2 | 7 | Toate caracterele care apar în sunt distincte |
3 | 11 | |
4 | 10 | |
5 | 15 | |
6 | 12 | |
7 | 31 | Fără restricții adiționale |
Exemplul 1
sirag.in
3
aaa
sirag.out
5
Explicație
Subsecvențele lui sunt:
- aaa - poate fi tăiat într-un singur mod pentru ;
- aaa - poate fi tăiat într-un singur mod pentru ;
- aaa - poate fi tăiat în moduri pentru și un singur mod pentru .
Exemplul 2
sirag.in
6
aabbaa
sirag.out
43
Exemplul 3
sirag.in
20
aababbababbababhhsse
sirag.out
7027