#include <iostream>
#include <string>
#include <vector>
#include <set>
#define N 505
using namespace std;
set <vector <int> > st;
vector <int> s;
int mp[N][N];
int fx[6]{1,-1,0,0};
int fy[6]{0,0,-1,1};
int n,m;
int sx,sy;
void dfs(int col,int x,int y){
mp[x][y] = 0;
s.push_back((sx - x) * 500 + (sy - y));
for (int i = 0;i < 4;i++){
int nx = x + fx[i];
int ny = y + fy[i];
if (mp[nx][ny] == col) dfs(col,nx,ny);
}
}
int main(){
cin >> n >> m;
for (int i = 1;i <= n;i++)
for (int j = 1;j <= m;j++)
cin >> mp[i][j];
for (int i = 1;i <= n;i++)
for (int j = 1;j <= n;j++)
if (mp[i][j] != 0){
while (s.size()) s.pop_back();
sx = i,sy = j;
dfs(mp[i][j],i,j);
st.insert(s);
}
cout << st.size();
return 0;
}