N, M = map(int, input().split()) S = input() G = [[] for _ in range(N)] for _ in range(M): a, b = map(int, input().split()) a -= 1 b -= 1 G[a].append(b) G[b].append(a) mod = 998244353 q = S.count("?") mypow = [1] for _ in range(q): mypow.append(mypow[-1] * 26 % mod) ans = 0 for i in range(N): if S[i] != "o" and S[i] != "?": continue pp = q - (S[i] == "?") ac = 0 ic = 0 xc = 0 for j in G[i]: if S[j] == "a": ac += 1 elif S[j] == "i": ic += 1 elif S[j] == "?": xc += 1 ans += ac * ic * mypow[pp] % mod if xc > 0: ans += ac * xc * mypow[pp-1] % mod ans += xc * ic * mypow[pp-1] % mod if xc > 1: ans += xc * (xc-1) * mypow[pp-2] % mod ans %= mod print(ans)