H,W,N = map(int,input().split()) ABCD = [list(map(int,input().split())) for _ in range(N)] INF = H + W - 1 Start = [] E = [[] for _ in range(N+2)] for i in range(N): a0,b0,c0,d0 = ABCD[i] E[0].append((i+1,a0+b0-2)) for j in range(N): a1,b1,c1,d1 = ABCD[j] if i == j: continue E[i+1].append((j+1,abs(a1-c0) + abs(b1-d0))) E[i+1].append((N+1,abs(H-c0) + abs(W-d0))) from heapq import * D = [INF] * (N+2) #普通のダイクストラ def dijkstra(): D[0] = 0 q = [(0,0)] while len(q) > 0: d, u = heappop(q) #下のifでTLE解消することがある if d > D[u]: continue for a,b in E[u]: if D[a] > D[u] + b + 1: D[a] = D[u] + b + 1 heappush(q, (D[a], a)) return dijkstra() print(D[N+1] - 1)