#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
****************************************************************/