from collections import deque def bfs(s): dq=deque() dq.append([s,0]) high=[10**9 for _ in range(H*W)] high[s]=0 while len(dq)!=0: p,h=dq.popleft() for e in edge[p]: if high[e]==10**9: dq.append([e,h+1]) high[e]=h+1 return high def csv(i,j): return i*W+j H,W,N=map(int,input().split()) edge=[[] for _ in range(H*W)] for i in range(H-1): for j in range(W): edge[csv(i,j)].append(csv(i+1,j)) edge[csv(i+1,j)].append(csv(i,j)) for i in range(H): for j in range(W-1): edge[csv(i,j)].append(csv(i,j+1)) edge[csv(i,j+1)].append(csv(i,j)) for i in range(N): a,b,c,d=map(int,input().split()) edge[csv(a-1,b-1)].append(csv(c-1,d-1)) dist=bfs(0) print(dist[-1])