#include using namespace std; typedef long long int ll; typedef pair P; typedef vector VI; typedef vector VVI; #define REP(i,n) for(ll i=0;i<(n);i++) #define ALL(v) v.begin(),v.end() constexpr ll MOD=998244353; constexpr ll INF=2e18; int f(vector

p){ int n=p.size(); VI used(n,0); int ret=0; while(1){ ret++; map x, y; REP(i,n){ if(!used[i]){ x[p[i].first]++; y[p[i].second]++; } } int maxx=0, xx, maxy=0, yy; for(auto q:x){ if(maxxmaxy){ if(p[i].first==xx) used[i]=1; else bre=0; } else{ if(p[i].second==yy) used[i]=1; else bre=0; } } } if(bre) break; } return ret; } int main(){ int h, w; cin >> h >> w; VVI a(h,VI(w)); REP(i,h)REP(j,w) cin >> a[i][j]; map mp; int k=1; REP(i,h)REP(j,w){ if(a[i][j]==0) continue; if(mp[a[i][j]]==0){ mp[a[i][j]]=k; k++; } } vector> p(k); REP(i,h)REP(j,w){ if(a[i][j]==0) continue; int id=mp[a[i][j]]-1; p[id].push_back({i,j}); } int ans=0; REP(i,k-1){ ans+=f(p[i]); } cout << ans << endl; return 0; }