#include <bits/stdc++.h>
using namespace std;
constexpr array<int, 4> DY = { -1, 1, 0, 0 };
constexpr array<int, 4> DX = { 0, 0, -1, 1 };
constexpr int M = 210;
constexpr int N = 210;
int m, n;
array<bitset<N>, N> mat, seen;
array<array<int, N>, M> neighborCnt;
bool isInBounds(int y, int x) {
return 0 <= y && y < m && 0 <= x && x < n;
}
bool bfs(int srcY, int srcX) {
queue<pair<int, int>> q;
q.push(make_pair(srcY, srcX));
seen[srcY][srcX] = true;
bool hasEndpoint = false;
bool canExtend = false;
while (!q.empty()) {
int y, x;
tie(y, x) = q.front();
q.pop();
if (neighborCnt[y][x] <= 1) {
hasEndpoint = true;
}
for (int i = 0; i < 4; ++i) {
int yy = y + DY[i];
int xx = x + DX[i];
if (isInBounds(yy, xx)) {
if (mat[yy][xx]) {
if (!seen[yy][xx]) {
seen[yy][xx] = true;
q.push(make_pair(yy, xx));
}
} else if (neighborCnt[y][x] <= 1 && neighborCnt[yy][xx] == 1) {
canExtend = true;
}
}
}
}
return hasEndpoint && !canExtend;
}
int main() {
if (fopen("RAN.inp", "r")) {
freopen("RAN.inp", "r", stdin);
freopen("RAN.out", "w", stdout);
}
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> m >> n;
for (int y = 0; y < m; ++y) {
for (int x = 0; x < n; ++x) {
char tmp;
cin >> tmp;
mat[y][x] = (tmp == '1');
}
}
for (int y = 0; y < m; ++y) {
for (int x = 0; x < n; ++x) {
for (int i = 0; i < 4; ++i) {
int yy = y + DY[i];
int xx = x + DX[i];
if (isInBounds(yy, xx)) {
if (mat[yy][xx]) {
++neighborCnt[y][x];
}
}
}
}
}
int ans = 0;
for (int y = 0; y < m; ++y) {
for (int x = 0; x < n; ++x) {
if (mat[y][x] && !seen[y][x]) {
ans += bfs(y, x) ? 1 : 0;
}
}
}
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3RleHByIGFycmF5PGludCwgND4gRFkgPSB7IC0xLCAxLCAgMCwgMCB9Owpjb25zdGV4cHIgYXJyYXk8aW50LCA0PiBEWCA9IHsgIDAsIDAsIC0xLCAxIH07Cgpjb25zdGV4cHIgaW50IE0gPSAyMTA7CmNvbnN0ZXhwciBpbnQgTiA9IDIxMDsKaW50IG0sIG47CmFycmF5PGJpdHNldDxOPiwgTj4gbWF0LCBzZWVuOwphcnJheTxhcnJheTxpbnQsIE4+LCBNPiBuZWlnaGJvckNudDsKCmJvb2wgaXNJbkJvdW5kcyhpbnQgeSwgaW50IHgpIHsKICAgIHJldHVybiAwIDw9IHkgJiYgeSA8IG0gJiYgMCA8PSB4ICYmIHggPCBuOwp9Cgpib29sIGJmcyhpbnQgc3JjWSwgaW50IHNyY1gpIHsKICAgIHF1ZXVlPHBhaXI8aW50LCBpbnQ+PiBxOwoKICAgIHEucHVzaChtYWtlX3BhaXIoc3JjWSwgc3JjWCkpOwogICAgc2VlbltzcmNZXVtzcmNYXSA9IHRydWU7CgogICAgYm9vbCBoYXNFbmRwb2ludCA9IGZhbHNlOwogICAgYm9vbCBjYW5FeHRlbmQgPSBmYWxzZTsKCiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIGludCB5LCB4OwogICAgICAgIHRpZSh5LCB4KSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwoKICAgICAgICBpZiAobmVpZ2hib3JDbnRbeV1beF0gPD0gMSkgewogICAgICAgICAgICBoYXNFbmRwb2ludCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewogICAgICAgICAgICBpbnQgeXkgPSB5ICsgRFlbaV07CiAgICAgICAgICAgIGludCB4eCA9IHggKyBEWFtpXTsKCiAgICAgICAgICAgIGlmIChpc0luQm91bmRzKHl5LCB4eCkpIHsKICAgICAgICAgICAgICAgIGlmIChtYXRbeXldW3h4XSkgewogICAgICAgICAgICAgICAgICAgIGlmICghc2Vlblt5eV1beHhdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5beXldW3h4XSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHEucHVzaChtYWtlX3BhaXIoeXksIHh4KSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZWlnaGJvckNudFt5XVt4XSA8PSAxICYmIG5laWdoYm9yQ250W3l5XVt4eF0gPT0gMSkgewogICAgICAgICAgICAgICAgICAgIGNhbkV4dGVuZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGhhc0VuZHBvaW50ICYmICFjYW5FeHRlbmQ7Cn0KCmludCBtYWluKCkgewogICAgaWYgKGZvcGVuKCJSQU4uaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4oIlJBTi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJSQU4ub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGNpbiA+PiBtID4+IG47CgogICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtOyArK3kpIHsKICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG47ICsreCkgewogICAgICAgICAgICBjaGFyIHRtcDsKICAgICAgICAgICAgY2luID4+IHRtcDsKICAgICAgICAgICAgbWF0W3ldW3hdID0gKHRtcCA9PSAnMScpOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGludCB5ID0gMDsgeSA8IG07ICsreSkgewogICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbjsgKyt4KSB7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CiAgICAgICAgICAgICAgICBpbnQgeXkgPSB5ICsgRFlbaV07CiAgICAgICAgICAgICAgICBpbnQgeHggPSB4ICsgRFhbaV07CgogICAgICAgICAgICAgICAgaWYgKGlzSW5Cb3VuZHMoeXksIHh4KSkgewogICAgICAgICAgICAgICAgICAgIGlmIChtYXRbeXldW3h4XSkgewogICAgICAgICAgICAgICAgICAgICAgICArK25laWdoYm9yQ250W3ldW3hdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpbnQgYW5zID0gMDsKCiAgICBmb3IgKGludCB5ID0gMDsgeSA8IG07ICsreSkgewogICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbjsgKyt4KSB7CiAgICAgICAgICAgIGlmIChtYXRbeV1beF0gJiYgIXNlZW5beV1beF0pIHsKICAgICAgICAgICAgICAgIGFucyArPSBiZnMoeSwgeCkgPyAxIDogMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwoKICAgIHJldHVybiAwOwp9Cg==