#include<bits/stdc++.h>
using namespace std;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
char grid[505][505];
int x, y;
int ans = 0;
void dfs(int i, int j) {
grid[i][j] = '-';
for (int k = 0; k < 4; k++) {
int ni = i + dx[k];
int nj = j + dy[k];
if (ni >= 0 && ni < x && nj >= 0 && nj < y && grid[ni][nj] == '0') {
dfs(ni, nj);
}
}
}
int main() {
cin >> x >> y;
cin.ignore();
for (int i = 0; i < x; i++) {
string line;
getline(cin, line);
for (int j = 0; j < y; j++) {
grid[i][j] = line[j];
}
}
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
if ((i == 0 || i == x-1 || j == 0 || j == y-1) && grid[i][j] == '0') {
dfs(i, j);
}
}
}
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
if (grid[i][j] == '0') {
ans++;
}
}
}
cout << ans << endl;
return 0;
}
/**************************************************************
Problem: 1913
User: yangwanning
Language: C++
Result: Accepted
Time:22 ms
Memory:2328 kb
****************************************************************/