#include using namespace std; const int N=2600,M=20000,INF=1e9,dx[]={0,0,1,-1},dy[]={1,-1,0,0}; char s[N][N]; struct ed{ int u,v,f; }e[M]; vector ed[N]; int d[N],c[N],ec,S,T; void add(int u,int v,int f){ ed[u].push_back(ec); e[ec++]={u,v,f}; ed[v].push_back(ec); e[ec++]={v,u,0}; } bool bfs(){ memset(d,-1,sizeof(d)); memset(c,0,sizeof(c)); queue q; q.push(S); d[S]=0; while(!q.empty()){ int u=q.front(); q.pop(); for(int ei:ed[u]){ int v=e[ei].v,f=e[ei].f; if(d[v]==-1&&f) d[v]=d[u]+1,q.push(v); } } return d[T]>=0; } int dfs(int u,int l){ int r=0; if(u==T||(!l)) return l; for(int &i=c[u];i0&&y>0&&x<=n&&y<=m&&s[x][y]=='w') add(id(i,j),id(x,y),1); } } printf("%d\n",Dinic()*90+min(b,w)*9+max(b,w)); return 0; }