Module: Programação de gráficos dinâmicos


Problem

6 /7


caminho da substring

Problem

Dado um gráfico de n vértices e m arestas direcionadas. Cada vértice contém alguma letra latina minúscula. 
Vamos definir o comprimento de um caminho como o maior número de vezes que alguma letra foi encontrada nesse caminho. Por exemplo, se as letras do caminho formam a string "abaca", então o valor desse caminho é 3.
Sua tarefa — encontre o caminho com o maior valor.

Entrada:
A primeira linha contém dois inteiros n, m (1 ≤ n, m ≤ 200000), significando que o grafo tem n vértices e m arestas direcionadas.
A segunda linha contém a string s, consistindo apenas em letras latinas minúsculas. Símbolo número i — esta é a letra escrita no topo do número i.
Em seguida, seguem-se m linhas. Cada uma dessas linhas contém dois inteiros x, y (1 ≤ x, y ≤ n) descrevendo uma aresta direcionada de x para y. Observe que x pode ser igual a y e pode haver várias arestas entre x e y.
Além disso, o grafo pode ser desconectado.

Saída:
Imprima um número — o comprimento máximo do caminho. Se houver caminhos com um valor arbitrariamente grande, imprima -1.

Exemplos:
 
Entrada Saída
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