Construct a Palindrome

AtCoder
IDabc197_f
Time3000ms
Memory256MB
Difficulty
We have a connected undirected graph with $N$ vertices and $M$ edges, which is not necessarily simple. Edge $i$ connects Vertex $A_i$ and Vertex $B_i$, and has a character $C_i$ written on it. Let us make a string by choosing a path from Vertex $1$ to Vertex $N$ (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 * $2 \le N \le 1000$ * $1 \le M \le 1000$ * $1 \le A_i \le N$ * $1 \le B_i \le N$ * $C_i$ is a lowercase English letter. * The given graph is connected. ## Input Input is given from Standard Input in the following format: $N$ $M$ $A_1$ $B_1$ $C_1$ $A_2$ $B_2$ $C_2$ $A_3$ $B_3$ $C_3$ $\hspace{25pt} \vdots$ $A_M$ $B_M$ $C_M$ [samples]
Samples
Input #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
Output #1
10

By traversing the edges in the order $1, 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 $10$.
Input #2
4 5
1 1 a
1 2 a
2 3 a
3 4 b
4 4 a
Output #2
5

By traversing the edges in the order $2, 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.
Input #3
3 4
1 1 a
1 2 a
2 3 b
3 3 b
Output #3
\-1

We cannot make a palindrome.
API Response (JSON)
{
  "problem": {
    "name": "Construct a Palindrome",
    "description": {
      "content": "We have a connected undirected graph with $N$ vertices and $M$ edges, which is not necessarily simple.   Edge $i$ connects Vertex $A_i$ and Vertex $B_i$, and has a character $C_i$ written on it.   Let",
      "description_type": "Markdown"
    },
    "platform": "AtCoder",
    "limit": {
      "time_limit": 3000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "abc197_f"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "We have a connected undirected graph with $N$ vertices and $M$ edges, which is not necessarily simple.  \nEdge $i$ connects Vertex $A_i$ and Vertex $B_i$, and has a character $C_i$ written on it.  \nLet...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments