Problem
Dato un grafico di n vertici e m archi orientati. Ogni vertice contiene una lettera latina minuscola.
Definiamo la lunghezza di un percorso come il maggior numero di volte in cui una lettera è stata incontrata lungo questo percorso. Ad esempio, se le lettere nel percorso formano la stringa "abaca", il valore di questo percorso è 3.
Il tuo compito — trova il percorso con il valore più grande.
Inserimento:
La prima riga contiene due numeri interi n, m (1 ≤ n, m ≤ 200000), il che significa che il grafo ha n vertici e m archi orientati.
La seconda riga contiene la stringa s, composta solo da lettere latine minuscole. Simbolo numero i — questa è la lettera scritta in alto numero i.
Quindi seguono m linee. Ognuna di queste righe contiene due numeri interi x, y (1 ≤ x, y ≤ n) che descrivono un arco orientato da xa y. Nota che x può essere uguale a y e possono esserci più archi tra x e y.
Inoltre, il grafico potrebbe essere disconnesso.
Uscita:
Stampa un numero — la lunghezza massima del percorso. Se ci sono percorsi con un valore arbitrariamente grande, print -1.
Esempi:
Input |
Uscita |
5 4
abaca
1 2
1 3
34
4 5 |
3 |
6 6
xzyabc
1 2
3 1
23
5 4
4 3
6 4 |
-1 |
10 14
xzyzyzyzqx
1 2
24
3 5
4 5
26
68
6 5
2 10
39
10 9
46
1 10
28
37 |
4 |