#include <bits/stdc++.h>
using namespace std;
int n,m,c;
char s[110][110];//二维字符数组
bool f[110][110];
int fx[] = {1,0,-1,0};
int fy[] = {0,1,0,-1};
//从x,y点开始遍历
void fun(int x,int y){
int i,dx,dy;
//尝试四个方向
for(i = 0;i < 4;i++){
dx = x + fx[i];
dy = y + fy[i];
if(dx >= 1 && dx <= n && dy >= 1 && dy <= m && f[dx][dy] == false && s[dx][dy] == '#'){
f[dx][dy] = true;//标记为走过
fun(dx,dy);
}
}
}
int main(){
int i,j;
cin>>n>>m;
for(i = 1;i <= n;i++){
for(j = 1;j <= m;j++){
cin>>s[i][j];
}
}
//遍历
for(i = 1;i <= n;i++){
for(j = 1;j <= m;j++){
//没走过,且是草丛
if(f[i][j] == false && s[i][j] == '#'){
c++;
f[i][j] = true;
fun(i,j);
}
}
}
cout<<c<<endl;
return 0;
}
/**************************************************************
Problem: 1383
User: admin
Language: C++
Result: Accepted
Time:12 ms
Memory:2096 kb
****************************************************************/