atcoder#ABC197F. [ABC197F] Construct a Palindrome

[ABC197F] Construct a Palindrome

Score : 600600 points

Problem Statement

We have a connected undirected graph with NN vertices and MM edges, which is not necessarily simple. Edge ii connects Vertex AiA_i and Vertex BiB_i, and has a character CiC_i written on it. Let us make a string by choosing a path from Vertex 11 to Vertex NN (possibly with repetitions of the same edge and vertex) and arrange the characters written on the edges in that path. Determine whether this string can be a palindrome. If it can, find the minimum possible length of such a palindrome.

Constraints

  • 2N10002 \le N \le 1000
  • 1M10001 \le M \le 1000
  • 1AiN1 \le A_i \le N
  • 1BiN1 \le B_i \le N
  • CiC_i is a lowercase English letter.
  • The given graph is connected.

Input

Input is given from Standard Input in the following format:

NN MM

A1A_1 B1B_1 C1C_1

A2A_2 B2B_2 C2C_2

A3A_3 B3B_3 C3C_3

\hspace{25pt} \vdots

AMA_M BMB_M CMC_M

Output

If a palindrome can be made, print the minimum possible length of such a palindrome; otherwise, print -1.

8 8
1 2 a
2 3 b
1 3 c
3 4 b
4 5 a
5 6 c
6 7 b
7 8 a
10

By traversing the edges in the order 1,2,3,1,2,4,5,6,7,81, 2, 3, 1, 2, 4, 5, 6, 7, 8, we can make a string abcabbacba, which is a palindrome. It is impossible to make a shorter palindrome, so the answer is 1010.

4 5
1 1 a
1 2 a
2 3 a
3 4 b
4 4 a
5

By traversing the edges in the order 2,3,4,5,52, 3, 4, 5, 5, we can make a string aabaa, which is a palindrome. Note that repetitions of the same edge and vertex are allowed.

3 4
1 1 a
1 2 a
2 3 b
3 3 b
-1

We cannot make a palindrome.