import sys sys.set_int_max_str_digits(0) MOD = 10**9+7 d = {} d['P'] = 0 d['D'] = 1 d['C'] = 2 d['A'] = 3 N, M = map(int, input().split()) S = input() G = [[list() for _ in range(4)] for _ in range(N)] UV = [] for i in range(M): u, v = map(int, input().split()) u -= 1 v -= 1 UV.append((u, v)) # 種類 uu = d[S[u]] vv = d[S[v]] # 頂点uから G[u][vv].append(v) # 頂点vから G[v][uu].append(u) ans = 0 for u, v in UV: # P - D - C - A # DC な辺に注目する # D側の頂点から P頂点に何個いけるか? uu = d[S[u]] vv = d[S[v]] if uu == 1 and vv == 2: sub = 1 # 頂点u から P頂点に何個行けるか? sub *= len(G[u][0]) # 頂点v から A頂点に何個行けるか? sub *= len(G[v][3]) ans = (ans + sub)%MOD elif uu == 2 and vv == 1: sub = 1 # u --> A sub *= len(G[u][3]) # v --> P sub *= len(G[v][0]) ans = (ans + sub)%MOD print(ans%MOD)