#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

const int limit = 2000;

bool tester(int matrix[limit][limit],int x,int M){   
    bool kolona = true;
    bool redd = true;
    int kol[M];
    int red[M];
    for(int i=0;i<M;i++){            //greska
    	for(int j=0;j<M;j++){
    	    if(matrix[i][j]==x){
    	    	red[i]+=x;
    	    }
        }
    }
    for(int i=0;i<M;i++){            //greska
    	for(int j=0;j<M;j++){
    	    if(matrix[i][j]==x){
    	    	kol[j]+=x;
    	    }
        }
    }
    for(int i=0;i<M;i++){                      
    	if(kol[i]!=kol[i+1] || kol[i]!=0){
    		kolona = false;
    	}
    }
    for(int i=0;i<M;i++){
    	if(red[i]!=red[i+1] || red[i]!=0){
    		redd = false;
    	}
    }
	if(redd == false || kolona == false){
		return false;
	}else{
		return true;
	}
		
}

int main(){
	
	int N,K;
	int i,j;
	cin>>N>>K;
	int matrix[limit][limit];
	for(i=0;i<N;i++){
		for(j=0;j<N;j++){
		    cin>>matrix[j][i];
	    }
	}
	bool arrT[K];
	int arrC[K];
	for(i=0;i<K;i++){
		arrC[i]=i+1;
	}
	for(i=0;i<K;i++){
		arrT[i]=tester(matrix,i,N);   //izbacuje samo false tj. 0
	/*	if(arrT[i]==true){
			cout<<1;
		}else{
			cout<<0;
		}*/
	}
	int br = 0;
	for(i=0;i<K;i++){
		if(arrT[i]==true){
			br++;
		}
	}
    cout<<br;
}



/*  5 10
    3 2 2 1 4
    3 2 2 7 4
    8 2 2 1 3
    8 8 9 9 9
    8 8 1 5 1  
 */