#include<bits/stdc++.h>
using namespace std;
#define M 998244353
#define ll long long
ll dx[4]={0,0,1,-1};
ll dy[4]={1,-1,0,0};
ll n,m,k,tot;
long long sum,ans=1;
char ma[10010][10010];
long long ksm(long long x,long long y){
long long ans=1,cnt=x;
while (y){
if (y&1) ans=ans*cnt%M;
cnt=cnt*cnt%M;
y>>=1;
}
return ans;
}
ll find(ll x,ll y){
ll js=0;
for (ll i=0;i<4;i++){
ll xx=x+dx[i],yy=y+dy[i];
if (xx>=1&&xx<=n&&yy>=1&&yy<=m&&ma[xx][yy]!='X') js++;
}
return js;
}
void dfs(ll x,ll y){
if (find(x,y)==1) tot++;
ma[x][y]='W';
sum++;
for (ll i=0;i<4;i++){
ll xx=x+dx[i],yy=y+dy[i];
if (xx>=1&&xx<=n&&yy>=1&&yy<=m&&ma[xx][yy]=='O'){
dfs(xx,yy);
}
}
}
int main(){
cin>>n>>m>>k;
for (ll i=1;i<=n;i++){
for (ll j=1;j<=m;j++){
cin>>ma[i][j];
}
}
for (ll i=1;i<=n;i++){
for (ll j=1;j<=m;j++){
if (ma[i][j]=='O'){
sum=tot=0;
dfs(i,j);
if (tot<2&&sum>1){
cout<<0<<endl;
return 0;
}
ans=ans*k%M*ksm(k-1,sum-1)%M;
}
}
}
cout<<ans<<endl;
return 0;
}
一直说我最后一大组数据中倒数第三个数据过不去ε=(´ο`*)))唉