#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
long long int n, m, st[100005], a[100005], b[100005];
vector<long long int> v[100005], s;
map<pair<long long int, long long int>, long long int> e;
void cl() {
  long long int i;
  for (i = 0; i < 100005; i++) {
    st[i] = 0;
  }
}
void deep(long long int q) {
  long long int i;
  st[q] = 1;
  for (i = 0; i < v[q].size(); i++) {
    if (st[v[q][i]] == 0) {
      deep(v[q][i]);
    }
  }
  s.push_back(q);
}
void top_sort() {
  long long int i;
  cl();
  for (i = 0; i < n; i++) {
    if (st[i] == 0) {
      deep(i);
    }
  }
  reverse(s.begin(), s.end());
}
void solve() {
  long long int i, j, sum = 0;
  for (i = 0; i < m; i++) {
    scanf("%I64d%I64d", &a[i], &b[i]);
    a[i]--;
    b[i]--;
    v[a[i]].push_back(b[i]);
  }
  top_sort();
  for (i = 0; i < n - 1; i++) {
    e[make_pair(s[i], s[i + 1])] = 1;
  }
  sum = 0;
  for (i = 0; i < m; i++) {
    if (e[make_pair(a[i], b[i])] == 1) {
      sum++;
    }
    if (sum == n - 1) {
      printf("%I64d", i + 1);
      return;
    }
  }
  printf("-1");
  return;
}
int main() {
  scanf("%I64d%I64d", &n, &m);
  solve();
  return 0;
}
