Sirag

Time limit: 1.4s Memory limit: 512MB Input: sirag.in Output: sirag.out

Fie un șir de caractere SS de lungime NN format din litere mici ale alfabetului englez. Pentru un KK oarecare (K1K \geq 1), alegem KK poziții 1i1<i2<i3<<iK<N1 \leq i_1 < i_2 < i_3 < \dots < i_K < N în care să tăiem șirul, rezultând K+1K + 1 șiruri, pe care le notăm cu T1,,TK+1T_1, \ldots, T_{K + 1}, astfel:

T1=S1S2Si1T2=Si1+1Si1+2Si2TK+1=Sik+1Sik+2SN\begin{matrix} T_1 & = & S_1\, S_2\, \ldots\, S_{i_1} \\ T_2 & = & S_{i_1 + 1} \, S_{i_1 + 2}\, \ldots\, S_{i_2} \\ \vdots & \vdots & \vdots \\ T_{K + 1} & = & S_{i_k + 1} \, S_{i_k + 2}\, \ldots \, S_N \end{matrix}

Șirurile T1,,TK+1T_1, \ldots, T_{K + 1} pot avea lungimi diferite.

Fie CiC_i mulțimea caracterelor ce apar în TiT_i. Spunem că o tăiere este echilibrată dacă C1=C2==CK+1|C_1| = |C_2| = \cdots = |C_{K + 1}| --- adică fiecare dintre șirurile T1,,Tk+1T_1, \ldots, T_{k + 1} conține la fel de multe caractere distincte.

Cerință

Considerăm toate subsecvențele șirului SS ș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 1 000 000 0071 \ 000 \ 000 \ 007.

Date de intrare

Fișierul de intrare sirag.in conține pe prima linie un număr natural NN, lungimea lui SS. Pe a doua linie, se află șirul de caractere SS.

Date de ieșire

Pe prima linie a fișierului de ieșire sirag.out se va scrie suma cerută modulo 1 000 000 0071 \ 000 \ 000 \ 007.

Restricții și precizări

  • 1N1 000 0001 \leq N \leq 1 \ 000 \ 000
# Scor Restricții
1 14 S1==SNS_1 = \cdots = S_N
2 7 Toate caracterele care apar în SS sunt distincte
3 11 N300N \leq 300
4 10 N2 000N \leq 2 \ 000
5 15 N7 000N \leq 7 \ 000
6 12 N100 000N \leq 100 \ 000
7 31 Fără restricții adiționale

Exemplul 1

sirag.in

3
aaa

sirag.out

5

Explicație

Subsecvențele lui SS sunt:

  • aaa - poate fi tăiat într-un singur mod pentru K=1K = 1;
  • aaa - poate fi tăiat într-un singur mod pentru K=1K = 1;
  • aaa - poate fi tăiat în 22 moduri pentru K=1K = 1 și un singur mod pentru K=2K = 2.

Exemplul 2

sirag.in

6
aabbaa

sirag.out

43

Exemplul 3

sirag.in

20
aababbababbababhhsse

sirag.out

7027

Log in or sign up to be able to send submissions!