from math import comb N, M = map(int, input().split()) S = input() G = [[] for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) G[u-1].append(v-1) G[v-1].append(u-1) MOD = 998244353 def inverse(n, d): return n * pow(d, -1, MOD) % MOD C = S.count("?") B = [pow(26, C, MOD)] for _ in range(3): B.append(B[-1]*inverse(1, 26)%MOD) ans = 0 for n in range(N): if S[n].isalpha() and S[n] != "o": continue a = 0 i = 0 q = 0 for v in G[n]: if S[v] == "a": a += 1 elif S[v] == "i": i += 1 elif S[v] == "?": q += 1 if S[n] == "o": ans += a*i%MOD*B[0]%MOD ans %= MOD ans += a*q%MOD*B[1]%MOD ans %= MOD ans += q*i%MOD*B[1]%MOD ans %= MOD if 2 <= q: ans += comb(q, 2)%MOD*B[2]*2%MOD ans %= MOD else: ans += a*i%MOD*B[1]%MOD ans %= MOD ans += a*q%MOD*B[2]%MOD ans %= MOD ans += q*i%MOD*B[2]%MOD ans %= MOD if 2 <= q: ans += comb(q, 2)%MOD*B[3]*2%MOD ans %= MOD print(ans)