N,M=map(int, input().split()) # D=[[] for i in range(N)] # for i in range(M): # a,b,d=map(int, input().split()) # a-=1;b-=1 # D[a].append((d,b));D[b].append((d,a)) A,B=[0]*3,[0]*3 for i in range(N): S=input() for j in range(M): if S[j]=='?': A[(i+j)%3]+=1 elif S[j]=='B': B[(i+j)%3]+=1 mod=998244353;n=10**6+100 inv_t=[0]+[1] for i in range(2,n): inv_t+=[inv_t[mod%i]*(mod-int(mod/i))%mod] kai=[1,1] rev_kai=[1,inv_t[1]] for i in range(2,n): kai.append(kai[-1]*i%mod) rev_kai.append(rev_kai[-1]*inv_t[i]%mod) def cmb(n,r): return kai[n]*rev_kai[r]*rev_kai[n-r]%mod C=[[0,0,0] for i in range(2)] for i in range(3): for j in range(A[i]+1): c=cmb(A[i],j) C[(B[i]+j)%2][i]+=c C[(B[i]+j)%2][i]%=mod ans=0 for i in range(2): p,q,r=C[i] p*=q p%=mod p*=r p%=mod ans+=p print(ans%mod)