#include int R,C; char data[2000][2000]; int invalid; void dfs (int x,int y) { int i,j; data[x][y] = '1'; for (i = -1; i < 2; i++) for (j = -1; j < 2; j++) if (data[x+i][y+j] == '#') { if (i && j && (data[x+i][y] == '.') &&(data[x][y+j]=='.')) invalid = 1; dfs(x+i,y+j); } } int main () { int i,j; int ships; while (1) { scanf ("%d%d",&R,&C); if (!R && !C) return 0; for (i = 0; i < R; i++) scanf("%s",data[i+1] + 1); for (i = 0 ; i <=C; i++) data[0][i] = data[R+1][i] ='.'; for (i = 0; i <= R; i++) data[i][0] = data[i][C+1] = '.'; data[R+1][C+1] = '.'; ships = 0; invalid = 0; for (i = 1; i <=R;i++) for (j = 1; j <=C;j++) if (data[i][j] == '#') { ships ++; dfs(i,j); } if (!invalid) printf("There are %d ships.\n",ships); else printf("Bad placement.\n"); } }