RT,全T
#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
template <typename T>
inline void read(T& r) {
r=0;bool w=0;
char ch=getchar();
while(ch<'0'||ch>'9') w=ch=='-'?1:0,ch=getchar();
while(ch>='0'&&ch<='9') r=(r<<3)+(r<<1)+(ch^48), ch=getchar();
r=w?-r:r;
}
const int N=1010,M=1e6+10,inf=0x7ffffff;
#define id(i,j) (i-1)*m+j
int n,m,s,t,maxflow,col,row;
int h[N],e[M],ne[M],w[M],idx=1;
int dep[N],cur[N];
char g[51][51];int c[51][51],r[51][51];
queue<int>q;
int a[M],b[M],tot;
inline void add(int a,int b){
e[++idx]=b;ne[idx]=h[a];w[idx]=1;h[a]=idx;
e[++idx]=a;ne[idx]=h[b];w[idx]=0;h[b]=idx;
}
bool bfs(){
for(int i=1;i<=t;++i)dep[i]=0,cur[i]=h[i];
dep[s]=1;q.push(s);
while(!q.empty()){
int u=q.front();q.pop();
for(int i=h[u],v;i;i=ne[i]){
v=e[i];
if(w[i]&&!dep[v]){
dep[v]=dep[u]+1;
q.push(v);
}
}
}
return dep[t];
}
int dinic(int u,int in){
if(u==t||!in)return in;
int out=0;
for(int i=cur[u],v;i;i=ne[i]){
cur[u]=i;v=e[i];
if(w[i]&&dep[v]==dep[u]+1){
int res=dinic(v,min(in,w[i]));
in-=res;out+=res;
w[i]-=res;w[i^1]+=res;
}
}
if(!out)dep[u]=-1;
return out;
}
void debug(){
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(g[i][j]!='#')printf("%d",r[i][j]);
else printf("#");
}
puts("");
}puts("");
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(g[i][j]!='#')printf("%d",c[i][j]);
else printf("#");
}
puts("");
}
}
int main(){
#ifdef LOCAL
freopen("std.in","r",stdin);
freopen("my.out","w",stdout);
#endif
read(n);read(m);
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
scanf(" %c",&g[i][j]);
}
g[0][i]=g[i][0]=g[n+1][i]=g[i][m+1]='#';
}
for(int i=1;i<=n;++i){//i->行, i+n->列, link(i,j+n) 表示在 (i,j) 放炸弹
for(int j=1;j<=m;++j){
if(g[i][j]=='#')continue;
c[i][j]=g[i-1][j]=='#'?++col:c[i-1][j];
r[i][j]=g[i][j-1]=='#'?++row:r[i][j-1];
if(g[i][j]=='*')a[++tot]=r[i][j],b[tot]=c[i][j];
}
}
s=row+col+1,t=s+1;
for(int i=1;i<=row;++i)add(s,i);
for(int i=1;i<=col;++i)add(i+row,t);
for(int i=1;i<=tot;++i)add(a[i],b[i]+row);
while(bfs())maxflow+=dinic(s,inf);
printf("%d\n",maxflow);
// debug();
return 0;
}