#include using namespace std; void fast_io() { ios::sync_with_stdio(false); std::cin.tie(nullptr); } int main() { fast_io(); int n, m; cin >> n >> m; vector> g(n); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; u--, v--; g[u].push_back(v); g[v].push_back(u); } vector flg(n); int k; cin >> k; for (int i = 0; i < k; i++) { int x; cin >> x; x--; flg[x] = true; } vector> dist(n, vector(5, -1)); deque> dq; dist[0][0] = 0; dq.push_back({0, 0}); while (!dq.empty()) { auto [u, c] = dq.front(); dq.pop_front(); for (int v : g[u]) { int nc = flg[v] ? c + 1 : 0; if (nc < 5 && dist[v][nc] == -1) { dist[v][nc] = dist[u][c] + 1; dq.push_back({v, nc}); } } } const int INF = 1e9; int ans = INF; for (int i = 0; i < 5; i++) { if (dist[n - 1][i] != -1) { ans = min(ans, dist[n - 1][i]); } } if (ans == INF) { ans = -1; } cout << ans << endl; }