import sys
n,m = map(int,input().split())
puddle = 0
grid = [list(sys.stdin.readline().strip()) for _ in range(n) ]
visited = [[False]*m for _ in range(n)]
dirs = [(-1,-1),(-1,0),(-1,1),
    (0,-1),         (0,1),
    (1,-1),(1,0),(1,1)]

# dfs版本
def dfs(x,y):
    visited[x][y] = True
    # 如果是水坑,则递归完所有相邻的w,并且标记
    for dx,dy in dirs:
        nx,ny = x+dx,y+dy
        if 0<=nx<n and 0<=ny<m and not visited[nx][ny] and grid[nx][ny]=='W':
            dfs(nx,ny)

# bfs版本
def bfs(x,y):
    from collections import deque
    dq = deque([(x,y)])
    while dq:
        x,y = dq.popleft()
        for dx,dy in dirs:
            nx,ny = x+dx,y+dy
            if 0<=nx<n and 0<=ny<m and not visited[nx][ny] and grid[nx][ny]=='W':
                dq.append((nx,ny))
                visited[nx][ny]=1
                 
# 正常遍历
# for i in range(n):
#     for j in range(m):
#         if grid[i][j]=='W' and not visited[i][j]:
#             # dfs(i,j)
#             bfs(i,j)
#             puddle +=1

# 压缩优化
# 避免对普通格子计算visited
water_position=[(x,y) for x in range(n) for y in range(m) if grid[x][y]=='W']
for i,j in water_position:
    if not visited[i][j]:
        bfs(i,j)
        puddle +=1
# 进一步压缩:
# 减少visited的内存占用
# visited = set()
print(puddle)