#include <bits/stdc++.h>
using namespace std;
struct node{
int H,L;
};
char mp[105][105];
bool vis[105][105];
int n,m,s=0;
int f[4][2]={-1,0,0,1,1,0,0,-1};
void bfs(int x ,int y){
queue<node> q;
s++;
vis[x][y]=1;
node e;e.H=x;e.L=y;
q.push(e);
while(!q.empty()){
node e=q.front(); q.pop();
for(int i=1;i<=3;i++){
int dx = e.H+f[i][0];
int dy = e.L+f[i][1];
if(dx<1 || dx>n||dy<1||dy>m){
continue;
}
if(vis[dx][dy]==1){
continue;
}
if(mp[dx][dy]!='0'){
vis[dx][dy]=1;
node d;d.H=dx;d.L=dy;
q.push(d);
}
}
}
}
int main(){
cin>>n>>m ;
for(int i=1;i<=n;i++){
for(int j = 1;j<=m;j++){
cin>>mp[i][j];
}
}
for(int i=1;i<=n ;i++){
for(int j =1;j<=m;j++){
if(mp[i][j]){
continue;
}
if(vis[i][j]==1){
continue;
}
bfs(i,j);
}
}
cout <<s;
return 0;
}