def r(Y): Y.sort() a=0; i=0 t=0 while True: b=Y[i] j=5-i u=((b-a)+(j-1))//j t+=u c=a+j*u if i==4: return t while True: if Y[i+1]<=c: i+=1 if i==4: break else: break if i==4: return t else: a=c i+=1 N,M=map(int,input().split()) #カードの位置を記録 Index=[[-1]*N for _ in range(M)] for i in range(1,N*M+1): n,m=map(int,input().split()) Index[m-1][n-1]=i #全探索 X=float("inf") for y in range(M): # x, x+1, x+2, x+3, x+4 タイプを処理 for x in range(N-4): X=min(X,r(Index[y][x:x+5])) # x-3, x-2, x-1, x, 1 タイプを処理 X=min(X,r([Index[y][0]]+Index[y][-4:])) print(X-1)