#include<bits/stdc++.h>
using namespace std;
int l,r,vis[505][505],ans;
char a[505][505];
struct stu{
int x,y;
};
int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};
void bfs(int x,int y){
queue<stu> q;
q.push({x,y});
vis[x][y] = 1;
while (!q.empty()){
x = q.front().x;
y = q.front().y;
q.pop();
for (int i = 0;i < 4;i ++){
int nx = x + dx[i];
int ny = y + dy[i];
if (nx>=1&&nx<=l&&ny>=1&&ny<=r&&vis[nx][ny]==0&&a[nx][ny]=='0'){
vis[nx][ny] = 1;
q.push ({nx,ny});
}
}
}
}
int main(){
cin >> l >> r;
for (int i = 1;i <= l;i ++){
for (int j = 1;j <= r;j ++){
cin >> a[i][j];
}
}
for (int i = 1;i <= l;i ++){
for (int j = 1;j <= r;j ++){
if (a[i][j] == '0'){
// vis[i][j] = 1;
bfs(i,j);
}
}
}
for (int i = 1;i <= l;i ++){
for (int j = 1;j <= r;j ++){
if (a[i][j] == '0' && vis[i][j] == 0){
ans ++;
}
}
}
// cout << endl;
// for (int i = 1;i <= l;i ++){
// for (int j = 1;j <= r;j ++){
// cout << vis[i][j] << ' ';
// }
// cout <<endl;
// }
// cout << endl;
cout << ans;
return 0;
}