from heapq import * def main(): n, m = list(map(int, input().split())) node = [[] for _ in range(n)] for _ in range(m): u, v, w = list(map(int, input().split())) node[u-1].append((v-1, w)) S = input() inf = 1 << 60 dp = [[inf for _ in range(6)] for _ in range(n)] ep = [[-1 for _ in range(6)] for _ in range(n)] dp[0][0] = 0 hq = [] heappush(hq, (0, 0, 0)) while hq: c, now, f = heappop(hq) if dp[now][f] < c: continue if f == 0: if S[now] == "K" and dp[now][1] > c: heappush(hq, (c, now, 1)) elif f == 1: if S[now] == "C": if dp[now][2] > c: if ep[now][2] != -1 and ep[now][2] != now: ep[now][3] = ep[now][2] dp[now][3] = dp[now][2] heappush(hq, (dp[now][3], now, 3)) ep[now][2] = now dp[now][2] = c heappush(hq, (dp[now][2], now, 2)) elif dp[now][3] > c and ep[now][2] != c: ep[now][3] = now dp[now][3] = c heappush(hq, (dp[now][3], now, 3)) elif f == 2 or f == 3: if S[now] == "P": if dp[now][4] > c: if ep[now][4] != -1 and ep[now][4] != now: ep[now][5] = ep[now][4] dp[now][5] = dp[now][4] heappush(hq, (dp[now][5], now, 5)) ep[now][4] = now dp[now][4] = c heappush(hq, (dp[now][4], now, 4)) elif dp[now][5] > c and ep[now][4] != c: ep[now][5] = now dp[now][5] = c heappush(hq, (dp[now][5], now, 5)) else: if S[now] == "C" and ep[now][f] != now: return c for nxt, w in node[now]: if dp[nxt][f] > c+w: dp[nxt][f] = c+w heappush(hq, (c+w, nxt, f)) return -1 print(main())