#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
****************************************************************/