import sys from collections import deque def main(): input = sys.stdin.read().split() ptr = 0 W = int(input[ptr]) ptr += 1 H = int(input[ptr]) ptr += 1 N = int(input[ptr]) ptr += 1 edges = set() for _ in range(N): M_i = int(input[ptr]) ptr += 1 B = list(map(int, input[ptr:ptr + M_i + 1])) ptr += M_i + 1 for j in range(M_i): current = B[j] next_cell = B[j + 1] w1 = current % W h1 = current // W w2 = next_cell % W h2 = next_cell // W if h1 == h2: # East-West movement step = 1 if w2 > w1 else -1 start, end = (w1, w2) if step == 1 else (w1, w2) for w in range(w1, w2, step): a = h1 * W + w b = h1 * W + (w + step) if a < b: edges.add((a, b)) else: edges.add((b, a)) else: # North-South movement step = 1 if h2 > h1 else -1 start, end = (h1, h2) if step == 1 else (h1, h2) for h in range(h1, h2, step): a = h * W + w1 b = (h + step) * W + w1 if a < b: edges.add((a, b)) else: edges.add((b, a)) size = W * H adj = [[] for _ in range(size)] for a, b in edges: adj[a].append(b) adj[b].append(a) start = 0 end = W * H - 1 if start == end: print(0) return visited = [-1] * size q = deque([start]) visited[start] = 0 while q: u = q.popleft() for v in adj[u]: if visited[v] == -1: visited[v] = visited[u] + 1 if v == end: print(visited[v]) return q.append(v) print("Odekakedekinai..") if __name__ == '__main__': main()