from collections import defaultdict import networkx as nx H,W = map(int,input().split()) A = [] dic = defaultdict(list) for i in range(H): a = list(map(int,input().split())) for j in range(W): num = a[j] if num != 0: dic[num].append((i,j)) A.append(a) print(A) print(dic) key_list = list(dic.keys()) #頂点は0~H+W-1 S = H+W T = H+W + 1 ans = 0 for num in key_list: G1 = nx.Graph() G1 = nx.DiGraph(G1) SX = set([]) SY = set([]) for x,y in dic[num]: SX.add(x) SY.add(y) G1.add_edge(x,y+H,capacity=1) print(SX,SY) for x in SX: G1.add_edge(S,x,capacity=1) for y in SY: G1.add_edge(y+H,T,capacity=1) flow_value, flows = nx.maximum_flow(G1,S,T) #print(num,flow_value,flows) ans += flow_value print(ans)