#include<bits/stdc++.h>
using namespace std;

const long long MaxN = 5e2 + 5;

long long n,m,ans=0;
long long dx[4]={-1,0,1,0};
long long dy[4]={0,1,0,-1};

bool visited[MaxN][MaxN];
char arr[MaxN][MaxN];

void bfs(long long i,long long j)
{
    queue<pair<long long,long long>> qu;

    qu.push({i,j});
    visited[i][j]=true;

    bool check=false;
    long long cnt=0;

    while(!qu.empty())
    {
        long long x=qu.front().first;
        long long y=qu.front().second;
        qu.pop();

        cnt++;

        for(long long t=0;t<4;t++)
        {
            long long new_x=x+dx[t];
            long long new_y=y+dy[t];

            if(new_x>n||new_x<1||new_y>m||new_y<1)
            {
                continue;
            }

            if(arr[new_x][new_y]=='.')
            {
                check=true;
            }

            if(arr[new_x][new_y]=='W'&&!visited[new_x][new_y])
            {
                visited[new_x][new_y]=true;
                qu.push({new_x,new_y});
            }
        }
    }

    if(!check)
    {
        ans+=cnt;
    }
}

void input()
{
    cin>>n>>m;

    for(long long i=1;i<=n;i++)
    {
        for(long long j=1;j<=m;j++)
        {
            cin>>arr[i][j];
            visited[i][j]=false;
        }
    }
}

void solve()
{
    for(long long i=1;i<=n;i++)
    {
        for(long long j=1;j<=m;j++)
        {
            if(arr[i][j]=='W'&&!visited[i][j])
            {
                bfs(i,j);
            }
        }
    }

    cout<<ans;
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    input();
    solve();

    return 0;
}