#include<iostream>
#define MAX 101
using namespace std;
int N,M;
char map[MAX][MAX];
int num=0; *//計數*
int next[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; *//斜着也算連着*
bool flag=0;
void dfs(int x,int y)
{
map[x][y]='.'; //将‘W’變為‘.’
for(int i=0;i<8;i++)
{
int dx=x+next[i][0];
int dy=y+next[i][1];
if(dx>=0&&dx<=N-1&&dy>=0&&dy<=M-1&&map[dx][dy]=='W') *//隻要不越界就可以*
dfs(dx,dy);
}
return ;
}
int main()
{
scanf("%d %d",&N,&M); *//輸入*
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cin>>map[i][j];
}
}
*//輸出*
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(map[i][j]=='W')
{
dfs(i,j);
num++;
}
}
}
cout<<num<<endl;
return 0;
}