func_code_string: #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;   }   