#include <iostream>
#include <functional>
using namespace std;

const int64_t MOD = 998244353;
const int mxN = 3e5+5;
int64_t p[mxN];
string s[mxN];
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    function<int64_t(int64_t, int64_t)> binpow = [=](int64_t x, int64_t y) {
        int64_t ret = 1;
        x %= MOD;
        while(y>0) {
            if(y&1)
                ret = ret*x%MOD;
            x = x*x%MOD;
            y >>= 1;
        }
        return ret;
    };
    
    function<int64_t(int64_t)> inv = [=](int64_t x) {
        return binpow(x, MOD-2);
    };
    
    int n,m;
    cin >> n >> m;
    p[2] = inv(4);
    for(int i=3; i<=max(m,n); ++i) {
        if(i&1)
            p[i] = p[i-1] - inv(binpow(2, i));
        else 
            p[i] = p[i-1] + inv(binpow(2, i));
        p[i] = (p[i]+MOD)%MOD;
    }
    
    int64_t ans=0;
    for(int i=0; i<n; ++i)
        cin >> s[i];
    for(int i=0; i<n; ++i) {
        int cnt=0;
        for(int j=0; j<m; ++j) {
            if(s[i][j] == '*')
                cnt=0;
            else
                ++cnt;
            ans = (ans+p[cnt])%MOD; 
        }
    }
    for(int j=0; j<m; ++j) {
        int cnt=0;
        for(int i=0; i<n; ++i) {
            if(s[i][j] == '*')
                cnt=0;
            else
                ++cnt;
            ans = (ans+p[cnt])%MOD;
        }
    }
    int64_t w=0;
    for(int i=0; i<n; ++i)
        for(int j=0; j<m; ++j)
            w += s[i][j] == 'o';
    w %= MOD;
    cout << (ans*binpow(2,w)%MOD) << '\n';
}