#include<iostream>
#include<cassert>
#include<atcoder/modint>
using namespace std;
using mint=atcoder::modint998244353;
int N,M;
int n[3][3]={
	{0,1,2},
	{1,2,0},
	{2,0,1}
};
int cnt[3];
int E[3];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin>>N>>M;
	for(int i=0;i<N;i++)
	{
		string S;cin>>S;
		for(int j=0;j<M;j++)
		{
			int x=n[i%3][j%3];
			if(S[j]=='?')cnt[x]++;
			else if(S[j]=='B')E[x]=!E[x];
		}
	}
	mint all=0;
	{
		mint ans=1;
		for(int i=0;i<3;i++)
		{
			if(cnt[i]>0)ans*=mint(2).pow(cnt[i]-1);
			else if(E[i]==1)ans=0;
		}
		all+=ans;
	}
	{
		mint ans=1;
		for(int i=0;i<3;i++)
		{
			if(cnt[i]>0)ans*=mint(2).pow(cnt[i]-1);
			else if(E[i]==0)ans=0;
		}
		all+=ans;
	}
	cout<<all.val()<<endl;
}