#include<bits/stdc++.h>
using namespace std;
int fx[8]={1,0,-1,0,-1,-1,1,1},fy[8]={0,1,0,-1,-1,1,-1,1},ans,n,m;
char a[101][101];
struct Node{
	int x,y;
};
queue<Node>q;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)cin>>a[i][j];
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]=='W'){
				a[i][j]='.';
				ans++;
				q.push({i,j});
				while(q.size()){
					for(int k=0;k<8;k++){
						int tx=q.front().x+fx[k],ty=q.front().y+fy[k];
						if(tx>0&&tx<=n&&ty>0&&ty<=m&&a[tx][ty]=='W'){
							a[tx][ty]='.';
							q.push({tx,ty});
						}
					}
					q.pop();
				}
			}
		}
	}
	cout<<ans;
	return 0;
}
/**************************************************************
	Problem: 1435
	User: chenshuo
	Language: C++
	Result: Accepted
	Time:21 ms
	Memory:2088 kb
****************************************************************/