#include using namespace std; int main(){ int N, Q; cin >> N >> Q; vector A(Q), B(Q); for (int i = 0; i < Q; i++){ cin >> A[i] >> B[i]; A[i]--; B[i]--; } int tv = Q + 1, fv = 0; while (tv - fv > 1){ int mid = (tv + fv) / 2; vector> E(N); vector d(N, 0); for (int i = 0; i < mid; i++){ E[A[i]].push_back(B[i]); d[B[i]]++; } queue q; for (int i = 0; i < N; i++){ if (d[i] == 0){ q.push(i); } } int cnt = 0; while (!q.empty()){ int v = q.front(); q.pop(); cnt++; for (int w : E[v]){ d[w]--; if (d[w] == 0){ q.push(w); } } } if (cnt < N){ tv = mid; } else { fv = mid; } } if (tv == Q + 1){ cout << -1 << endl; } else { cout << tv << endl; } }