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(4)] for _ in range(n)] dp[0][0] = 0 ep = [set() for _ in range(2*n)] hq = [] heappush(hq, (0, 0, 0, -1)) while hq: c, now, f, pre = heappop(hq) if f < 2 and dp[now][f] < c: continue if 2 <= f and (pre in ep[2*now+f-2] or 2 <= len(ep[2*now+f-2])): continue ep[2*now+f-2].add(pre) if S[now] == "KCPC"[f]: if f == 0: if dp[now][1] > c: dp[now][1] = c heappush(hq, (c, now, 1, pre)) elif f == 1: dp[now][2] = min(dp[now][2], c) heappush(hq, (c, now, 2, now)) elif f == 2: dp[now][3] = min(dp[now][3], c) heappush(hq, (c, now, 3, pre)) elif pre != now: return c for nxt, w in node[now]: if f < 2 and dp[nxt][f] > c+w: dp[nxt][f] = c+w heappush(hq, (c+w, nxt, f, pre)) else: dp[nxt][f] = min(dp[nxt][f], c+w) heappush(hq, (c+w, nxt, f, pre)) return -1 print(main())