#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<string>& grid, int n, int m, int i, int j)
{
if (i<0 || i>= n || j < 0 || j >= m || grid[i][j] == '.')
{
return;
}
grid[i][j] = '.';
dfs(grid, n, m, i+1, j);
dfs(grid, n, m, i-1, j);
dfs(grid, n, m, i, j+1);
dfs(grid, n, m, i, j-1);
dfs(grid, n, m, i+1, j+1);
dfs(grid, n, m, i+1, j-1);
dfs(grid, n, m, i-1, j+1);
dfs(grid, n, m, i-1, j-1);
}
int main() {
int n,m;
cin >> n >> m;
vector<string> grid(n);
for (int i = 0; i<n; ++i)
{
cin >> grid[i];
}
int ans = 0;
for (int i = 0; i<n; ++i)
{
for (int j = 0; j < m; ++j)
{
//检测到一个水坑,把水坑入侵成为干地,入侵了几次就有几个水坑
//并且不会走回头路的,因为水坑经过dfs被我们修改变成干地了
if (grid[i][j] == 'W')
{
dfs(grid, n, m, i, j);
ans++;
}
}
}
cout << ans;
}
// 64 位输出请用 printf("%lld")