#include<bits/stdc++.h>
using namespace std;
#define int long long
#define N 300005
int read(){
	int w=0,f=1;
	char c=' ';
	while(c<'0'||c>'9')f=(c=='-'?-f:f),c=getchar();
	while(c>='0'&&c<='9')w=w*10+c-'0',c=getchar();
	return w*f;
}
int readc(){
	char c=getchar();
	while(c!='*'&&c!='o')c=getchar();
	if(c=='*')return 0;
	return 1;
}
const int mod=998244353;
int n,m,**a,p[N],t[N],ans;
void init(){
	p[0]=1;
	for(int i=1;i<N;i++)
		p[i]=p[i-1]*2%mod;
	for(int i=2;i<N;i++)
		t[i]=(t[i-1]+t[i-2]*2+p[i-2])%mod;
}
signed main(){
	init();
	n=read(),m=read();
	a=new int*[n+3];
	for(int i=0;i<n+3;i++)
		a[i]=new int[m+3];
	int w=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			a[i][j]=readc(),w+=a[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(a[i][j]){
				int k=j+1;
				while(k<=m&&a[i][k])k++;
				k--;
				int len=k-j+1;
				ans=(ans+t[len]*p[w-len])%mod;
				j=k;
			}
	for(int j=1;j<=m;j++)
		for(int i=1;i<=n;i++)
			if(a[i][j]){
				int k=i+1;
				while(k<=n&&a[k][j])k++;
				k--;
				int len=k-i+1;
				ans=(ans+t[len]*p[w-len])%mod;
				i=k;
			}
	printf("%lld\n",ans);
	return 0;
}