#include<iostream>
using namespace std;
typedef pair<int,int> pii;
const int N=1010,M=N*N;//!!注意队列里的数据范围是N*N
bool st[N][N];
char farm[N][N];
pii duilie[M];//这里是M
int n,m,ans;
void bfs(int x,int y){
int hh=0,tt=0;//自己建队列
duilie[0]={x,y};
st[x][y]=true;
while(hh<=tt){//这里的队列里如果有值临界状态是hh==tt
pii x=duilie[hh++];//队列头出队
for(int i=x.first-1;i<=x.first+1;i++)
for(int j=x.second-1;j<=x.second+1;j++)
{
if(i==x.first && j==x.second) continue;//巧妙是不用写int dx[8]={1,1,1,0,0,-1,-1,-1};
//int dy[8]={1,0,-1,1,-1,1,0,-1};
//但是仍应注意不要把自己写进去
if(i<0||i==n||j<0||j==m) continue;
if(st[i][j]||farm[i][j]=='.') continue;
duilie[++tt]={i,j};//队尾入队
st[i][j]=true;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>farm[i][j];//这里只能用cin,scanf容易出错
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(farm[i][j]=='W' && !st[i][j])
{
bfs(i,j);
ans++;
}
cout<<ans;
return 0;
}