//土尔逊Torson 编写于2023/05/20
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
using namespace std;
struct Matrix079 { //定义矩阵
int matrix079[10][10];
int row, col;
Matrix079(int r,int c) : row(r), col(c) {}
};
Matrix079 GetMatrix(Matrix079 x) { //获得矩阵
for (int i = 0; i < x.row; ++i) {
for (int j = 0; j < x.col; ++j) {
scanf("%d", &x.matrix079[i][j]);
}
}
return x;
}
Matrix079 AddMatrix(Matrix079 a, Matrix079 b) { //矩阵相加
Matrix079 answer(a.row, a.col);
for (int i = 0; i < a.row; ++i) {
for (int j = 0; j < a.col; ++j) {
answer.matrix079[i][j] = a.matrix079[i][j] + b.matrix079[i][j];
}
}
return answer;
}
int FindZero(Matrix079 x) { //统计矩阵中全为零的行和列的数目的函数
int horizontal = 0, vertical = 0;
int count = 0;
for (int i = 0; i < x.row; ++i) {
for (int j = 0; j < x.col; ++j) {
if (0 == x.matrix079[i][j]) {
++horizontal;
if (x.col == horizontal) {
++count;
}
}
}
horizontal = 0;
}
for (int j = 0; j < x.col; ++j) {
for (int i = 0; i < x.row; ++i) {
if (0 == x.matrix079[i][j]) {
++vertical;
if (x.row == vertical) {
++count;
}
}
}
vertical = 0;
}
return count;
}
void MyPrint(int x) { //输出
printf("%d\n", x);
}
int main() {
int M, N;
while (scanf("%d%d", &M, &N) != EOF) {
if (M == 0) {
break;
}
Matrix079 A(M, N); //定义 A B
Matrix079 B(M, N);
A = GetMatrix(A); //获得 A B
B = GetMatrix(B);
Matrix079 answer = AddMatrix(A, B); //A B 相加 A+B
int zero = FindZero(answer); //统计全为零的行和列的数量
MyPrint(zero); //输出结果
}
system("pause");
return EXIT_SUCCESS;
}
// 64 位输出请用 printf("%lld")