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