n,m=map(int, input().split()) G = [[] for i in range(n)] for _ in range(m): a,b=map(lambda x: int(x) - 1, input().split()) G[a].append(b) G[b].append(a) k=int(input()) if k>0: A=set(map(lambda x: int(x) - 1, input().split())) else: A=set() seen=[[-1]*5 for i in range(n)] seen[0][0]=0 from collections import deque q = deque() q.append((0, 0)) # 最初の頂点を入れておく while q: cur_node, iwi_cnt = q.popleft() if cur_node==n-1: print(seen[cur_node][iwi_cnt]) exit() for nxt_node in G[cur_node]: if nxt_node in A: nxt_cnt=iwi_cnt+1 if nxt_cnt>=5: continue else: nxt_cnt=0 if seen[nxt_node][nxt_cnt]==-1: seen[nxt_node][nxt_cnt]=seen[cur_node][iwi_cnt]+1 q.append((nxt_node, nxt_cnt)) print(-1)