#include<bits/stdc++.h>
using namespace std;
int n,m,sum;
int a[1005][1005],b[1005][1005];
struct ndeo {
int x,y;
} c[100000];
int h,t;
int w[4][2]= {{0,1},{1,0},{0,-1},{-1,0}};
void bfs(int x,int y) {
h=1,t=1;
c[1].x=x,c[1].y=y;
b[x][y]=1;
while(h<=t) {
for(int i=0; i<4; i++) {
int xx=c[h].x+w[i][0];
int yy=c[h].y+w[i][1];
if(xx<1||xx>n||yy<1||yy>m) continue;
if(a[xx][yy]&&!b[xx][yy]) {
t++;
c[t].x=xx;
c[t].y=yy;
b[xx][yy]=1;
}
}
h++;
}
}
int main() {
cin>>n>>m;
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(a[i][j]||b[i][j]) {
sum++;
bfs(i,j);
} else {
cout<<-1;
}
}
}
cout<<sum;
return 0;
}