#include<iostream>
using namespace std;
const int Maxn=10;
struct Matrix{
int matrix[Maxn][Maxn];
int row,col;
Matrix(){};
Matrix(int r,int c):row(r),col(c){};
};
void in_Matrix(Matrix &x){//输入矩阵
for(int i=0;i<x.row;i++){
for(int j=0;j<x.col;j++){
scanf("%d",&x.matrix[i][j]);
}
}
}
void out_Matrix(Matrix &x){//输出矩阵
for(int i=0;i<x.row;i++){
for(int j=0;j<x.col;j++){
if(j==0)printf("%d",x.matrix[i][j]);
else printf(" %d",x.matrix[i][j]);
}
printf("\n");
}
}
int add_Matrix(Matrix x,Matrix y){//矩阵加法
int zero=x.row+x.col;//默认全为0
for(int i=0;i<x.row;i++){
for(int j=0;j<x.col;j++){
if(x.matrix[i][j]+y.matrix[i][j]!=0){//该行不全为0,
zero--;
break;
}
}
}
for(int j=0;j<x.col;j++){
for(int i=0;i<x.row;i++){
if(x.matrix[i][j]+y.matrix[i][j]!=0){//该列不全为0
zero--;
break;
}
}
}
return zero;
}
int main(){
int n,m;
while(scanf("%d %d",&m,&n)!=EOF){
if(m==0)break;
Matrix x(m,n);
Matrix y(m,n);
in_Matrix(x);
in_Matrix(y);
printf("%d\n",add_Matrix(x, y));
}
return 0;
}