#if 0
#endif
#include <bits/stdc++.h>
using namespace std;
int n,m,sum;
int dx[8]= {0,0,-1,-1,-1,1,1,1};
int dy[8]= {-1,1,-1,0,1,-1,0,1};
char a[105][105];
bool vis[105][105],flag;
struct node {
int x,y;
};
queue<node> q;
node tmp,now;
void bfs(int x,int y) {
tmp.x=x,tmp.y=y;
if(a[tmp.x][tmp.y]'.') return;
flag=true;
vis[tmp.x][tmp.y]=true;
a[tmp.x][tmp.y]='.';
q.push(tmp);
while(q.size()) {
now=q.front();
q.pop();
for(int i=0; i<8; i++) {
int xx=now.x+dx[i];
int yy=now.y+dy[i];
if(xx>=1&&xx<=n&&yy>=0&&yy<m&&!vis[xx][yy]&&a[xx][yy]'W') {
tmp.x=xx;
tmp.y=yy;
vis[tmp.x][tmp.y]=true;
a[tmp.x][tmp.y]='.';
q.push(tmp);
}
}
}
return;
}
void work() {
cin>>n>>m;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=1; i<=n; i++)
for(int j=0; j<m; j++) {
flag=false;
bfs(i,j);
if(flag) sum++;
}
cout<<sum;
return;
}
int main() {
work();
return 0;
}