RT
#include<iostream>
using namespace std;
int r,c,cnt=0;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
char map[1001][1001];
void dfs(int x,int y){
map[x][y]='*';
for(int i=1;i<=4;i++){
if(x + dx[i] > 0 && x + dx[i] <= r && y + dy[i] > 0 && y + dy[i] <= c && map[x+dx[i]][y+dy[i]] == '#' )
dfs(x + dx[i], y + dy[i]);
}
}
bool d(int i,int j){
int c=0;
if(map[i][j] == '#') c++;
if(map[i+1][j] == '#') c++;
if(map[i][j+1] == '#') c++;
if(map[i+1][j+1] == '#') c++;
if(c == 3)return 0;
return 1;
}
int main(){
cin>>r>>c;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>map[i][j];
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(i<r&&j<c&&d(i,j)==0){
cout<<"Bad placement.";
return 0;
}
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(map[i][j]=='#'){
cnt++;
dfs(i,j);
}
}
}
if(cnt==0) cout<<"Bad placement.";
else cout<<"There are "<<cnt<<" ships.";
}