#include <iostream>
#include <vector>
using namespace std;









int main() {
	typedef vector<vector<int> > IntMatrix;
	
	int velFarme = 0;
	int tikvica;
	int vrsteJabuka = 0;
	int ax = 0, ay = 0;
	int bx = 0, by = 0;
	int cx = 0, cy = 0;
	int flaga = 0, flagb = 0, flagc = 0, flag = 0, counterTikvica = 0;
	int mainCount = 0;

	cin >> velFarme >> vrsteJabuka;
	
	vector<int> farmaInit(velFarme, 0);


	IntMatrix farmaMap(velFarme, farmaInit);  //Znaci bukvalno se cita farmaMap[x][y];
	

	for (int i = 0; i < farmaMap.size(); i++) {              //Ovo ocitava ulaz.
		for (int j = 0; j < farmaMap[i].size(); j++) {
			cin >> farmaMap[j][i];
		}
	}

	int ocitanBroj = 0;

	 
	
	for (tikvica = 1; tikvica <= vrsteJabuka; tikvica++) {  //Ovo proverava svaki broj.
		
		flaga = 0;
		flagb = 0;
		flagc = 0;
		flag = 0;
		counterTikvica = 0;
		ax = 0;
		ay = 0;
		bx = 0;
		by = 0;
		cx = 0;
		cy = 0;
		
		for (int y = 0; y < farmaMap.size(); y++) {
			for (int x = 0; x < farmaMap[y].size(); x++) {


				if (flaga == 0) {
					ocitanBroj = farmaMap[x][y];
				}


				if (ocitanBroj == tikvica && flaga == 0) {
					ax = x;  //OVO JE TACKA A.
					ay = y;
					flaga = 1;
					

				}
			}
		}

		
		ocitanBroj = tikvica;
		while (ocitanBroj == tikvica && bx < farmaMap.size() - 1 && flagb == 0) {
			for (int x = ax; x < farmaMap.size(); x++) {      //Second check.

				ocitanBroj = farmaMap[x][ay];


				if (ocitanBroj != tikvica) {

					flagb = 1;

				}

				if (flagb == 0) {
					bx = x;  //OVO JE TACKA B.
					by = ay;
				}



			}

		}


		ocitanBroj = tikvica;
		while (ocitanBroj == tikvica && cy < farmaMap.size() - 1 && flagc == 0) {
			for (int y = ay; y < farmaMap.size(); y++) {      //Third check.

				if (flag == 0) {
					ocitanBroj = farmaMap[ax][y];
				}

				if (ocitanBroj != tikvica) {

					flagc = 1;

				}


				if (flagc == 0) {
					cx = ax;  //OVO JE TACKA C.
					cy = y;
				}



			}

		} 
		for (int y = ay; y <= cy; y++) { //final check
			for (int x = ax; x <= bx; x++) {


				ocitanBroj = farmaMap[x][y];
			

				if (ocitanBroj != tikvica && flag == 0) {

					flag = 1;
					
					
				}
			}
		}


		for (int y = 0; y < farmaMap.size(); y++) {
			for (int x = 0; x < farmaMap[y].size(); x++) {


				ocitanBroj = farmaMap[x][y];
				

				if (ocitanBroj == tikvica) {
					counterTikvica++;


				}
			}
		}


		if (flag == 0 && counterTikvica == (bx - ax + 1)*(cy - ay + 1)) {
        	mainCount++;
		}

		

	}




	cout << mainCount;
	return 0;
}