# import pypyjit # pypyjit.set_param('max_unroll_recursion=-1') N,M = map(int,input().split()) S = list(input()) mod = 998244353 d = {'P':0,'D':1,'C':2,'A':3} val = [-1]*N S = [d[i] for i in S] e = [[] for _ in range(N)] for i in range(M): u,v = map(int,input().split()) u -= 1 v -= 1 if abs(S[u]-S[v])==1: if S[u]>S[v]: e[v].append(u) else: e[u].append(v) for i in range(N): if S[i]==3: val[i]=1 def dfs(x): if val[x] != -1: return val[x] tmp = 0 for ix in e[x]: tmp += dfs(ix) tmp %= mod val[x] = tmp return tmp ans = 0 for i in range(N): if S[i]==0: ans += dfs(i) ans %= mod print(ans)