#include<bits/stdc++.h>
using namespace std;
int cnt=0,n,m;
char a[100+10][100+10];
int dx[8]={0,0,-1,1,-1,1,-1,1};
int dy[8]={-1,1,0,0,-1,1,1,-1};
struct node{
int x,y;
};
queue<node>q;
int bfs(int x,int y){
q.push(node{x,y});
a[x][y]=='.';
while(!q.empty()){
node now=q.front();
q.pop();
for(int i=0;i<8;i++){
int nx=now.x+dx[i];
int ny=now.y+dy[i];
if(a[nx][ny]=='.') continue;
q.push(node{nx,ny});
a[nx][ny]='.';
}
}
}
int main() {
cin>>n>>m;
memset(a,'.',sizeof(a));
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'){
cnt++;
bfs(i,j);
}
cout<<cnt;
return 0;
}