#include //#include using namespace std; //using namespace atcoder; using ll = long long; //using mint = modint998244353; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); int N, M; cin >> N >> M; vector> E(N); for (int i=0; i> u >> v; u--; v--; E[u].push_back(v); E[v].push_back(u); } int K; cin >> K; vector exist(N); for (int i=0; i> a; a--; exist[a] = 1; } vector dist(N, vector(5, 1e9)); dist[0][0] = 0; queue> que; que.push({0, 0}); while(!que.empty()){ auto [from, cnt] = que.front(); que.pop(); for (auto to : E[from]){ if (!exist[to] && dist[to][0] == 1e9){ dist[to][0] = dist[from][cnt]+1; que.push({to, 0}); } else if (exist[to] && cnt <= 3 && dist[to][cnt+1] == 1e9){ dist[to][cnt+1] = dist[from][cnt]+1; que.push({to, cnt+1}); } } } int ans=1e9; for (int i=0; i<5; i++) ans = min(ans, dist[N-1][i]); cout << (ans == 1e9 ? -1 : ans) << endl; return 0; }