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