#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string.h>
#include<map>
#include<vector>
#include<string>
using namespace std;
const int maxN =  3e5+ 10;
typedef long long int ll;
#define mod 998244353
ll dp[maxN];
ll f[maxN];
string c[maxN];
int main()
{

    int n,m;
    scanf("%d%d",&n,&m);
    f[0]=1;
    for(int i=1;i<=n*m;i++)
    {
        f[i]=f[i-1]*2%mod;
    }
    dp[0]=dp[1]=0;
    for(int i=2;i<=max(n,m);i++)
        dp[i]=(dp[i-1]+dp[i-2]*2%mod+f[i-2])%mod;

    for(int i=1;i<=n;i++)
        cin>>c[i];
    ll sum=0;
    for(int i=1;i<=n;i++)
        for(int j=0;j<m;j++)
            if(c[i][j]=='o') sum++;

    //cout<<dp[4]<<endl;

    ll ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<m;j++)
        {
            int num=0;
            if(c[i][j]=='o')
            {
                while(j<m&&c[i][j]=='o') j++,num++;
                //cout<<num<<endl;
                ans=(ans+dp[num]*f[sum-num])%mod;
            }
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=1;j<=n;j++)
        {
            int num=0;
            if(c[j][i]=='o')
            {
                while(j<=n&&c[j][i]=='o') j++,num++;
                //cout<<num<<endl;
                ans=(ans+dp[num]*f[sum-num])%mod;
            }
        }
    }
    cout<<ans<<endl;
}
