#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")