#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;
}