#define MD 201712111 int h,w,t[320]; char a[320][320]; mint u[1<<18],*v=u,*w=u+(1<<17); { rd(h,w,a(h)); if(w>h){ rep(y,w)rep(x,y)swap(a[y][x],a[x][y]); swap(w,h); } u[0]=1; rep(y,h)rep(x,w){ int ty=(y?t[x]:1<<30); int tx=(x?t[x-1]:1<<30); rep(b,1<>x; bool b1=1&b>>x-1; w[b]=(tytx&&b0==b1||ty==tx&&b0<=b1)*(v[b]+(ty>tx||ty==tx&&!b1)*v[b^1<