#include <bits/stdc++.h>
using namespace std;
const int fx[] = {-1,0,0,1};
const int fy[] = {0,-1,1,0};
char mp[1005][1005];
int r,c;
bool isBadShip = false;
int cnt = 0;
int vis[1005][1005];
void dfs(int x,int y){
if(vis[x][y]) return;
vis[x][y] = 1;
for(int i = 0;i < 4;i++){
int nx = x + fx[i],ny = y + fy[i];
if(nx >= 1 && nx <= r && ny >= 1 && ny <= c && mp[nx][ny] == '#'){
dfs(nx,ny);
mp[nx][ny] = '.';
}
}
}
int main()
{
cin >> r >> c;
for(int i = 1;i <= r;i++){
for(int j = 1;j <= c;j++){
cin >> mp[i][j];
}
}
for(int i = 2;i <= r - 1;i++){
for(int j = 2;j <= c - 1;j++){
if(mp[i-1][j-1] == '.' && mp[i-1][j] == '#' && mp[i][j-1] == '#' && mp[i][j] == '#') isBadShip = true;
if(mp[i-1][j-1] == '#' && mp[i-1][j] == '.' && mp[i][j-1] == '#' && mp[i][j] == '#') isBadShip = true;
if(mp[i-1][j-1] == '#' && mp[i-1][j] == '#' && mp[i][j-1] == '.' && mp[i][j] == '#') isBadShip = true;
if(mp[i-1][j-1] == '#' && mp[i-1][j] == '#' && mp[i][j-1] == '#' && mp[i][j] == '.') isBadShip = true;
if(isBadShip) {
cout << "Bad placement.";
return 0;
}
}
}
for(int i = 1;i <= r;i++){
for(int j = 1;j <= c;j++){
if(mp[i][j] == '#') {
dfs(i,j);
cnt++;
}
}
}
printf("There are %d ships.",cnt);
return 0;
}