#include<bits/stdc++.h>
using namespace std;
char a[110][110];
bool vis[110][110];
struct node
{
int x;
int y;
};
node d[]={{1,1},{1,-1},{-1,1},{-1,-1},{0,1},{1,0},{-1,0},{0,-1}};
void bfs(int n,int m,int x,int y)
{
queue<node> q;
q.push((node){x,y});
while(!q.empty())
{
node tmp=q.front();
vis[tmp.x][tmp.y]=1;
q.pop();
for(int i=0;i<8;i++)
{
if(tmp.x+d[i].x>=1&&tmp.x+d[i].x<=n
&&tmp.y+d[i].y>=1&&tmp.y+d[i].y<=m)
{
if(!vis[tmp.x+d[i].x][tmp.y+d[i].y]&&
a[tmp.x+d[i].x][tmp.y+d[i].y]=='W')
{
q.push((node){tmp.x+d[i].x,tmp.y+d[i].y});
}
}
}
}
}
int main()
{
int n,m,ans=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
scanf("%s",a[i]+1);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(!vis[i][j]&&a[i][j]=='W')
{
ans++;
bfs(n,m,i,j);
}
}
}
cout<<ans;
}