#include <iostream>
#include <vector>
using namespace std;


int dir[8][2] = {1, 0, 0, 1, -1, 0, 0, -1, 1, 1, 1, -1, -1, 1, -1, -1};

void dfs(const vector<vector<char>>& mmap, vector<vector<bool>>& visited, int x,
         int y) {
    if (mmap[x][y] == '.' || visited[x][y]) return; // 退出条件
    visited[x][y] = true;

    for (int i = 0; i < 8; i++) {
        int nextx = x + dir[i][0];
        int nexty = y + dir[i][1];

        if (nextx < 0 || nextx >= visited.size() || nexty < 0 ||
                nexty >= visited[0].size()) continue;
        dfs(mmap, visited, nextx, nexty);
    }

}
int main() {
    int a, b;
    cin >> a >> b;
    vector<vector<char>> mmap(a, vector<char>(b, '.'));
    char sig;
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) {
            cin >> sig;
            mmap[i][j] = sig;
        }
    }

    vector<vector<bool>> visited(a, vector<bool>(b, false));

    int result = 0;
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) {
            if (visited[i][j] == false && mmap[i][j] == 'W') {
                dfs(mmap, visited, i, j);
                result++;
            }
        }
    }

    cout << result << endl;

}