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