N,M=map(int,input().split()) S=input() edge=[[] for _ in range(N)] for _ in range(M): a,b=map(int,input().split()) edge[a-1].append(b-1) edge[b-1].append(a-1) qc=S.count('?') p=998244353 ans=0 for i in range(N): if S[i] == "a" or S[i] == "i": continue use = qc if S[i] == "?": use -= 1 ac,ic,qqc=0,0,0 for e in edge[i]: if S[e] == "a": ac+=1 elif S[e] == "i": ic+=1 elif S[e] == "?": qqc+=1 #aとi ans+=ac*ic*pow(26,use,p) ans%=p #aと? ans+=ac*qqc*pow(26,use-1,p) ans%=p #iと? ans+=ic*qqc*pow(26,use-1,p) ans%=p #?と? ans+=qqc*(qqc-1)*pow(26,use-2,p) ans%=p print(ans)