#include<stdio.h>
char a[102][102];
int d[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1}; //d数组表示方位
int n,m;
void dfs(int x,int y)
{
if(a[x][y]=='.' || x<0 || x>=n || y<0 || y>=m) return ;
for(int i=0;i<8;++i)
{
a[x][y]='.'; //把W变成点
dfs(x+d[i][0],y+d[i][1]); //递归调用
}
}
void dfs(int x,int y) //最原始的
{
if(a[x][y]=='.' || x<0 || x>=n || y<0 || y>=m) return ;
a[x][y]='.';
dfs(x-1,y-1);
dfs(x-1,y);
dfs(x-1,y+1);
dfs(x,y-1);
dfs(x,y+1);
dfs(x+1,y-1);
dfs(x+1,y);
dfs(x+1,y+1);
}
int main()
{
int i,j;
int ans=0;
scanf("%d%d",&n,&m);
getchar();
for(i=0;i<n;++i)
scanf("%s",a[i]);
for(i=0;i<n;++i) //遍历
{
for(j=0;j<m;++j)
{
if(a[i][j]=='W')
{
ans++;
dfs(i,j);
}
}
}
printf("%d",ans);
return 0;
}
/* //测试数据
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
*/