//连通块和迷宫不一样有八个方向
#include<bits/stdc++.h>
using namespace std;
const int N=101;
int n,m;
char g[N][N];
bool st[N][N];//存状态:有没有被淹过
int res=0;
int dx[]={1,1,1,0,0,-1,-1,-1};
int dy[]={-1,0,1,1,-1,1,0,-1};
void dfs(int x,int y){
for(int i=0;i<8;i++){
int a=x+dx[i],b=y+dy[i];
if(a<0||a>=n||b<0||b>=m) continue;
if(g[a][b]!='W')continue;
if(st[a][b])continue;
st[a][b]=true;
dfs(a,b);
}
}
int main(){
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
scanf("%s",g[i]);
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(g[i][j]=='W'&&!st[i][j]){
//你找到一个没走过的空格就填上水dfs会使那个联通的坑都是
//水但是又有一个循环就能计算坑
dfs(i,j);
res++;
}
}
}
printf("%d",res);
return 0;
}