#include <bits/stdc++.h>
using namespace std;
char a[101][101];
int vis[101][101];
int dd[4][2] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
int n, m, ans = 0, head = 0, tail = 0;
struct node {
int x, y;
} q[114514];
void bfs(int x, int y) {
ans++;
head = 0;
tail = 1;
q[tail].x = x;
q[tail++].y = y;
while (head < tail) {
vis[x][y] = 1;
for (int i = 0; i < 4; i++) {
int xx = dd[i][0] + q[head].x;
int yy = dd[i][1] + q[head].y;
if (a[xx][yy] != '0' && vis[xx][yy] == 0) {
q[++tail].x = xx;
q[tail].y = yy;
}
}
head++;
}
}
int main() {
cin >> n >> m;
memset(vis, 0, sizeof(vis));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (vis[i][j] == 0 && a[i][j] != '0') {
bfs(i, j);
// cout << 1 << endl;
}
}
}
cout << ans;
return 0;
}