ll@w,@h; unionFind u('m',w,1); int z=powmod(10,w,998244353); ll b[w]{}; rep(h){ string@q; ll a[26]{}; rep(j,w){ ll c=q[j]; ll k=u(j); if(c>='0'&&c<='9'){ c-='0'; if(!b[k]){ z=z*299473306l%998244353; b[k]=c; }else if(b[k]!=c){ z=0; } } if(c>='a'&&c<='z'){ c-='a'; if(a[c]){ ll d=u(a[c]-1); if(u(d,k)){ if(b[d]&&b[k]){ if(b[d]!=b[k]){ z=0; } }else{ z=z*299473306l%998244353; b[u(d)]=b[d]|b[k]; } } }else{ a[c]=k+1; } } } wt(z); }