#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;
}