#include <iostream>
#include<vector>
using namespace std;
const int dirs[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
void dfs(int x,int y,vector<vector<char>>&grid,vector<vector<bool>>&visited){
int n=grid.size();
int m=grid[0].size();
if(x<0||x>=n||y<0||y>=m||grid[x][y]!='W'||visited[x][y])return;
visited[x][y]=true;
for(auto&dir:dirs){
dfs(x+dir[0],y+dir[1],grid,visited);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,m;
cin>>n>>m;
vector<vector<char>>grid(n,vector<char>(m));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>grid[i][j];
}
}
vector<vector<bool>>visited(n,vector<bool>(m,false));
int cnt=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]=='W'&&!visited[i][j]){
cnt++;
dfs(i,j,grid,visited);
}
}
}
cout<<cnt<<endl;
return 0;
}