#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:64000000")
using namespace std;
const long long inf32 = 2e9 + 9;
const long long inf64 = 1e18 + 18;
long long seed = 2e5 + 1;
const long long mod = 1e9 + 7;
const int N = 1e5 + 5;
vector<int> gr[N];
int color[N], n, pos[N], rez = inf32;
bool used[N];
pair<int, int> dp[N];
bool dfs(int cur, int &stop, bool &stopped, deque<int> &vc) {
  color[cur] = 1;
  for (auto &x : gr[cur]) {
    if (x == rez) continue;
    if (color[x] == 1) {
      vc.push_front(cur);
      stop = x;
      stopped = false;
      return true;
    }
    if (!color[x] && dfs(x, stop, stopped, vc)) {
      if (!stopped) vc.push_front(cur);
      stopped |= cur == stop;
      return true;
    }
  }
  color[cur] = 2;
  return false;
}
deque<int> find_any() {
  deque<int> cycle;
  int stop;
  bool stopped;
  for (int i = 1; i <= n; ++i) color[i] = 0;
  for (int i = 1; i <= n; ++i) {
    if (i == rez) continue;
    if (!color[i] && dfs(i, stop, stopped, cycle)) break;
  }
  return cycle;
}
pair<int, int> dfs1(int cur, int nxt) {
  used[cur] = true;
  dp[cur] = {inf32, 0};
  for (auto &x : gr[cur]) {
    if (x == nxt) continue;
    if (pos[x]) {
      dp[cur] = {min(dp[cur].first, pos[x]), max(dp[cur].second, pos[x])};
      continue;
    }
    if (!used[x]) dfs1(x, 0);
    dp[cur] = {min(dp[cur].first, dp[x].first),
               max(dp[cur].second, dp[x].second)};
  }
  return dp[cur];
}
void solve() {
  int m, a, b;
  scanf("%d%d", &n, &m);
  while (m--) {
    scanf("%d%d", &a, &b);
    gr[a].push_back(b);
  }
  deque<int> mainc = find_any();
  if (mainc.empty()) {
    puts("-1");
    return;
  }
  for (int i = 0; i < mainc.size(); ++i) pos[mainc[i]] = i + 1;
  memset(used, false, N);
  int last = 0, mx = 0;
  for (int i = 0; i < mainc.size(); ++i) {
    pair<int, int> k = dfs1(mainc[i], mainc[(i + 1) % mainc.size()]);
    if (i >= mx) rez = mainc[i];
    if (k.second) {
      if (k.first - 1 <= i) break;
      mx = max(mx, k.second - 1);
    }
  }
  if (rez == inf32) rez = mainc.back();
  printf("%d\n", find_any().empty() ? rez : -1);
}
int main() {
  solve();
  return 0;
}
