#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
void makegraph(vector<vector<ll>> &graph, vector<vector<ll>> &adj) {
vector<bool> vis(graph.size() + 1, false);
queue<ll> q;
q.push(1);
vis[1] = true;
while (!q.empty()) {
ll node = q.front();
q.pop();
for (auto it : adj[node]) {
if (it != node) {
graph[node].push_back(it);
// cout << node << " " << it << " \n";
q.push(it);
}
}
}
}
bool can(const vector<vector<ll>> &adj, ll n) {
queue<ll> q;
q.push(1);
vector<bool> vis(n + 1, false);
vis[1] = true;
while (!q.empty()) {
ll node = q.front();
q.pop();
for (auto it : adj[node]) {
if (!vis[it]) {
q.push(it);
vis[it] = true;
}
}
}
return !vis[n];
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt" , "r" , stdin);
freopen("output.txt" , "w" , stdout);
#endif
ll n, m;
cin >> n >> m;
vector<vector<ll>> adj(n + 1);
while (m--) {
ll u, v;
cin >> u >> v;
adj[u].push_back(v);
}
if (can(adj, n)) {
cout << -1 << '\n';
return 0;
}
queue<ll> q;
vector<vector<ll>> graph(n + 1);
vector<ll> indegree(n + 1, 0);
vector<bool> vis(n + 1, false);
vector<ll> dis(n + 1, INT_MIN);
makegraph(graph, adj);
for (auto it : graph) {
for (auto k : it) {
indegree[k]++;
}
}
q.push(1);
vis[1] = true;
dis[1] = 1;
while (!q.empty()) {
ll node = q.front();
q.pop();
for (auto it : graph[node]) {
if (!vis[it]) {
indegree[it]--;
if (indegree[it] == 0) {
q.push(it);
dis[it] = max(dis[it], dis[node] + 1);
}
}
}
}
cout << dis[n] << '\n';
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwp2b2lkIG1ha2VncmFwaCh2ZWN0b3I8dmVjdG9yPGxsPj4gJmdyYXBoLCB2ZWN0b3I8dmVjdG9yPGxsPj4gJmFkaikgewogICAgdmVjdG9yPGJvb2w+IHZpcyhncmFwaC5zaXplKCkgKyAxLCBmYWxzZSk7CiAgICBxdWV1ZTxsbD4gcTsKICAgIHEucHVzaCgxKTsKICAgIHZpc1sxXSA9IHRydWU7CiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIGxsIG5vZGUgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IgKGF1dG8gaXQgOiBhZGpbbm9kZV0pIHsKICAgICAgICAgICAgaWYgKGl0ICE9IG5vZGUpIHsKICAgICAgICAgICAgICAgIGdyYXBoW25vZGVdLnB1c2hfYmFjayhpdCk7CiAgICAgICAgICAgICAgICAvLyBjb3V0IDw8IG5vZGUgPDwgIiAiIDw8IGl0IDw8ICIgXG4iOwogICAgICAgICAgICAgICAgcS5wdXNoKGl0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgp9CgoKCgpib29sIGNhbihjb25zdCB2ZWN0b3I8dmVjdG9yPGxsPj4gJmFkaiwgbGwgbikgewogICAgcXVldWU8bGw+IHE7CiAgICBxLnB1c2goMSk7CiAgICB2ZWN0b3I8Ym9vbD4gdmlzKG4gKyAxLCBmYWxzZSk7CiAgICB2aXNbMV0gPSB0cnVlOwoKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgbGwgbm9kZSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvciAoYXV0byBpdCA6IGFkaltub2RlXSkgewogICAgICAgICAgICBpZiAoIXZpc1tpdF0pIHsKICAgICAgICAgICAgICAgIHEucHVzaChpdCk7CiAgICAgICAgICAgICAgICB2aXNbaXRdID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gIXZpc1tuXTsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiICwgInIiICwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIgLCAidyIgLCBzdGRvdXQpOwojZW5kaWYKICAgIGxsIG4sIG07CiAgICBjaW4gPj4gbiA+PiBtOwogICAgdmVjdG9yPHZlY3RvcjxsbD4+IGFkaihuICsgMSk7CiAgICB3aGlsZSAobS0tKSB7CiAgICAgICAgbGwgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICB9CgogICAgaWYgKGNhbihhZGosIG4pKSB7CiAgICAgICAgY291dCA8PCAtMSA8PCAnXG4nOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIHF1ZXVlPGxsPiBxOwoKICAgIHZlY3Rvcjx2ZWN0b3I8bGw+PiBncmFwaChuICsgMSk7CgogICAgdmVjdG9yPGxsPiBpbmRlZ3JlZShuICsgMSwgMCk7CiAgICB2ZWN0b3I8Ym9vbD4gdmlzKG4gKyAxLCBmYWxzZSk7CiAgICB2ZWN0b3I8bGw+IGRpcyhuICsgMSwgSU5UX01JTik7CiAgICBtYWtlZ3JhcGgoZ3JhcGgsICBhZGopOwogICAgZm9yIChhdXRvIGl0IDogZ3JhcGgpIHsKICAgICAgICBmb3IgKGF1dG8gayA6IGl0KSB7CiAgICAgICAgICAgIGluZGVncmVlW2tdKys7CiAgICAgICAgfQogICAgfQogICAgcS5wdXNoKDEpOwogICAgdmlzWzFdID0gdHJ1ZTsKICAgIGRpc1sxXSA9IDE7CgogICAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgICAgICBsbCBub2RlID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yIChhdXRvIGl0IDogZ3JhcGhbbm9kZV0pIHsKICAgICAgICAgICAgaWYgKCF2aXNbaXRdKSB7CiAgICAgICAgICAgICAgICBpbmRlZ3JlZVtpdF0tLTsKICAgICAgICAgICAgICAgIGlmIChpbmRlZ3JlZVtpdF0gPT0gMCkgewogICAgICAgICAgICAgICAgICAgIHEucHVzaChpdCk7CiAgICAgICAgICAgICAgICAgICAgZGlzW2l0XSA9IG1heChkaXNbaXRdLCBkaXNbbm9kZV0gKyAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGRpc1tuXSA8PCAnXG4nOwoKCiAgICByZXR1cm4gMDsKfQo=