import sys sys.setrecursionlimit(10**7) def ii(): return int(input()) def ist(): return input().split() def mi(d=0): return map(lambda x:int(x)-d,input().split()) def lmi(d=0): return list(map(lambda x:int(x)-d,input().split())) INF = float("inf") def answer(s): print(s) exit() ################################################ n,m = mi() g = [[] for _ in range(n)] for _ in range(m): u,v = mi(1) g[u].append(v) g[v].append(u) k = ii() if k: a = set(mi(1)) else: a = [] visit = [[False]*n for _ in range(4)] visit.append([True]*n) que = [(0,0)] ans = 0 while que: ans += 1 nq = [] for qi,qc in que: for gi in g[qi]: if gi == n-1: answer(ans) else: if gi in a: count = qc+1 else: count = 0 if not visit[count][gi]: visit[count][gi] = True nq.append((gi,count)) que = nq print(-1)