N,M=map(int,input().split()) g=[[] for i in range(N)] for i in range(M): U,V=map(int,input().split()) g[U-1].append(V-1) g[V-1].append(U-1) K=int(input()) A=[] if K!=0: A=list(map(int,input().split())) iwai=[False for i in range(N)] for i in A: iwai[i-1]=True visited=[[10**18 for j in range(5)] for i in range(N)] from collections import deque q=deque([]) if iwai[0]: q.append([0,1]) visited[0][1]=0 else: q.append([0,0]) visited[0][0]=0 while len(q)>0: z_=q.popleft() z=z_[0] num=z_[1] for k in g[z]: if iwai[k] and num<=3: if visited[k][num+1]!=10**18: continue q.append([k,num+1]) visited[k][num+1]=visited[z][num]+1 elif not iwai[k]: if visited[k][0]!=10**18: continue q.append([k,0]) visited[k][0]=visited[z][num]+1 if min(visited[N-1])==10**18: print(-1) else: print(min(visited[N-1]))