#include <stdio.h>
int num=0,m,n;
char s[1005][1005];
int visit[1005][1005]={0};
void dfs(int x, int y){ //计算相邻一片#的数量
if(s[x][y]=='.'||visit[x][y]==1) return;
visit[x][y]=1;
num++;
if(x>1)dfs(x-1,y);
if(x<m)dfs(x+1,y);
if(y>1)dfs(x,y-1);
if(y<n)dfs(x,y+1);
return;
}
int main(){
int ans=0,a,b,leng,deep; //变量意义在下文描述
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++){
scanf("\n");
for(int j=1;j<=n;j++){
scanf("%c",&s[i][j]);
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(s[i][j]=='#'&&visit[i][j]==0) {
a=i+1;leng=1;
while(s[a][j]!='.'){ //计算宽度leng
leng++;a++;
}
b=j+1;deep=1;
while(s[i][b]!='.'){ //计算长度deep
deep++;b++;
}
num=0; //初始化#的数量,num代表一艘船#的数量
dfs(i,j); //计算相邻一片#的数量
if(leng*deep==num){ //长乘宽==面积,成为合法的船只,ans++
ans++;
}
else {
printf("Bad placement."); //船只不合法
goto B;
}
}
}
}
printf("%d",ans);
B:return 0;
}