#include<bits/stdc++.h>
using namespace std;
const int N=1e2+10;
char mp[N][N];//定义地图
int n,m;
typedef pair<int,int>PII;
int move_[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};//移动变量


void bfs(int a,int b)//广搜,将传进来的池塘变‘.’
{
    queue<PII>q;//坐标队列
    q.push({a,b});
    
    while(!q.empty())
    {
        int x=q.front().first;//读坐标
        int y=q.front().second;
        q.pop();
        mp[x][y]='.';//初始化第一个点(可以放上面,这里偷个懒)
        
        for(int i=0;i<8;i++)
        {
            int dx=x+move_[i][0];//移动后的坐标
            int dy=y+move_[i][1];
            
            if(dx<=n&&dx>0&&dy<=m&&dy>0&&mp[dx][dy]=='W')//查找正方形边上是否有‘W’
            {
                mp[dx][dy]='.';
                q.push({dx,dy});
            }
        }
    }
}


int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>mp[i][j];
    
            int ans=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            if(mp[i][j]=='W'){bfs(i,j);ans++;}//统计池塘
        }
    cout<<ans;
      return 0;
}