#include <stdio.h>

int a, b;  // dimensions: a rows, b columns
char *map;
#define MAP(i, j) map[(i) * b + (j)]

void dfs(int x, int y) {
    if (x < 0 || x >= a || y < 0 || y >= b || MAP(x, y) != '0') return;
    MAP(x, y) = '*';  // Mark as visited
    dfs(x + 1, y); dfs(x - 1, y); dfs(x, y + 1); dfs(x, y - 1);
}

int main() {
    scanf("%d %d\n", &a, &b);
    char vla[a * b];
    map = vla;
    
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) MAP(i, j) = getchar();
        getchar();  // Skip newline
    }
    
    // Mark all spaces reachable from edges (flooded areas)
    for (int i = 0; i < a; i++) {
        dfs(i, 0); dfs(i, b - 1);
    }
    for (int j = 0; j < b; j++) {
        dfs(0, j); dfs(a - 1, j);
    }
    
    // Count remaining empty spaces (safe areas)
    int count = 0;
    for (int i = 0; i < a; i++)
        for (int j = 0; j < b; j++)
            if (MAP(i, j) == '0') count++;
    
    printf("%d\n", count);
    return 0;
}

#牛客AI配图神器#