from collections import deque N, M = map(int, input().split()) E = [tuple(map(int, input().split())) for _ in range(M)] G = [[] for _ in range(N)] for a, b in E: a, b = a-1, b-1 G[a].append(b); G[b].append(a) K = int(input()) if K: A = [int(x) - 1 for x in input().split()] A = set(A) else: A = set() inf = float("inf") rank = [[inf]*N for _ in range(5)] Q = deque([(0, 0)]) rank[0][0] = 0 while Q: state1, v1 = Q.popleft() r2 = 1 + rank[state1][v1] for v2 in G[v1]: if v2 in A: state2 = 1 + state1 else: state2 = 0 if state2 >= 5: continue if r2 < rank[state2][v2]: rank[state2][v2] = r2 Q.append((state2, v2)) ans = min(rank[i][N-1] for i in range(5)) print(ans if ans < inf else -1)