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