from collections import deque N, M = map(int, input().split()) Edge = [[] for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) u -= 1 v -= 1 Edge[u].append(v) Edge[v].append(u) K = int(input()) if K > 0: A = set(list(map(int, input().split()))) else: A = set() dist = [[-1] * N for _ in range(5)] dist[0][0] = 0 q = deque([(0, 0)]) while q: k, v = q.popleft() for to in Edge[v]: if to + 1 in A: if 0 <= k <= 3: if dist[k + 1][to] != -1: continue dist[k + 1][to] = dist[k][v] + 1 q.append((k + 1, to)) else: if dist[0][to] != -1: continue dist[0][to] = dist[k][v] + 1 q.append((0, to)) ans = 1 << 60 for k in range(5): if dist[k][-1] != -1: ans = min(ans, dist[k][-1]) if ans == 1 << 60: ans = -1 print(ans)