# N x M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다.
#  구멍이 뚫려 있는 부분끼리 상,하,좌,우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 
# 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하시오.
 

# 다음은 예시이다.

 

# 입력

# 4 5

# 00110

# 00011

# 11111

# 00000

 

 

# 출력 

# 3

# ----------------------------------------------------------------------------------------------------------------------------

# <해설>

 

# 입력 처음에는 N x M크기가 주어지고 다음은 틀이 주어진다.

 

# 예시는
 
# 0 0 1  1  0

# 0 0 0 1  1

# 1  1  1  1  1

# 0 0 0 0 0

 

# 이런 얼음칸이 주어졌던 것이고 여기서 크게 3개의 조각이 만들어지므로 출력이 3이 된 것이다.

# 어떻게 하면 알고리즘화 시킬 수 있을까? 

# 이 문제는 1칸씩 돌아가면서 DFS로 풀어야 하는 문제이다.(재귀함수를 사용한다고 생각하면 쉽다.)

# 선택된 칸의 사방으로 확장할 수 있으면 확장해서 다시하면 재귀를 돌리면 결국 확장가능한 곳까지 뻗어나간다.

# DFS로 특정 노드를 방문하고 연결된 모든 노드들도 방문
def dfs(x, y) :
    # 주어진 범위를 벗어나는 경우에는 즉시 종료
    if x <= -1 or x >= n or y <= -1 or y >= m:
       return False
    # 현재 노드를 아직 방문하지 않았다면
    if graph[x][y] == 0:
        # 해당 노드 방문 처리
        graph[x][y] = 1
        # 상, 하, 좌, 우의 위치들도 모두 재귀적으로 호출
        dfs(x-1, y) # 상
        dfs(x, y- 1)    # 좌
        dfs(x+1, y) # 하
        dfs(x,y+1)  #  우
        return True
    return False

# N, M을 공백을 기준으로 구분하여 입력 받기
n,m = map(int,input().split())

# 2차원 리스트의 맵 정보 입력 받기
graph = []
for i in range(n) :
    graph.append(list(map(int, input())))

#모든 노드(위치)에 대하여 음료수 채우기
result = 0
for i in range(n) :
    for j in range(m) :
        # 현재 위치에서 DFS 수행
        if dfs(i,j) == True:
            result += 1
print(result)