#include <bits/stdc++.h>
using namespace std;
const int N = 102;
int n, m, ans;
int vis[N][N];

void dfs(int x, int y) {
    //遍历九宫格,是否连通 也可以使用类似遍历上下左右的方法创建两个数组实现

    for (int _i = max(1, x - 1); _i <= min(n, x + 1); _i++) {
        for (int _j = max(1, y - 1); _j <= min(m, y + 1); _j++) {
            if (vis[_i][_j])continue;
            vis[_i][_j] = 1;

            dfs(_i, _j);

        }
    }

}
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        for (int j  = 1; j <= m; j++) {
            char c;
            cin >> c;
            vis[i][j] = (c == 'W' ? 0 : 1);
        }
    }

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            // 这个格子是水坑
            if (vis[i][j] == 0)
            {
                ans++;         //发现新水坑
                dfs(i, j);     //把整个水坑搜完、标记
            }
        }
    }

    cout << ans << '\n';

    return 0;
}