Module: Programación de gráficos dinámicos


Problem

6 /7


ruta de subcadena

Problem

Dado un gráfico de n vértices y m aristas dirigidas. Cada vértice contiene alguna letra latina minúscula. 
Definamos la longitud de un camino como el mayor número de veces que se encontró alguna letra a lo largo de este camino. Por ejemplo, si las letras en la ruta forman la cadena "abaca", entonces el valor de esta ruta es 3.
Tu tarea: encuentre la ruta con el valor más grande.

Entrada:
La primera línea contiene dos números enteros n, m (1 ≤ n, m ≤ 200000), lo que significa que el gráfico tiene n vértices y m aristas dirigidas.
La segunda línea contiene la cadena s, que consta solo de letras latinas en minúsculas. Símbolo número i — esta es la letra escrita en la parte superior del número i.
Luego siguen m líneas. Cada una de estas líneas contiene dos números enteros x, y (1 ≤ x, y ≤ n) que describen un borde dirigido de x a y. Tenga en cuenta que x puede ser igual a y, y puede haber varios bordes entre x e y.
Además, el gráfico puede estar desconectado.

Salida:
Imprimir un número — la longitud máxima del camino. Si hay rutas con un valor arbitrariamente grande, imprima -1.

Ejemplos:
 
Entrada Salida
5 4
abacá
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