#include <bits/stdc++.h>
using namespace std;
const int maxn = 1E5 + 77;
const int maxm = 5E5 + 77;
vector<int> E[maxn];
int N, M, C[maxn], cc = 0, X[maxn], T[maxn], xx;
int vis[maxn];
int dfs(int u, int f, const int &b) {
  vis[u] = 1;
  random_shuffle(E[u].begin(), E[u].end());
  int ret = 0;
  for (auto v : E[u])
    if (v != b) {
      if (vis[v] == 1) {
        ++T[v];
        ++ret;
        if (!b)
          ++cc;
        else
          ++xx;
      } else if (vis[v] == 0) {
        ret += dfs(v, u, b);
      }
    }
  vis[u] = 2;
  if (!b) C[u] += ret;
  return ret - T[u];
}
int main() {
  srand(17991);
  scanf("%d%d", &N, &M);
  for (int i = 1; i <= N; ++i) X[i - 1] = i;
  for (int i = 0; i < M; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    E[u].push_back(v);
  }
  for (int t = 0; t < 24; ++t) {
    random_shuffle(X, X + N);
    memset(vis, 0, sizeof(int) * (N + 3));
    memset(T, 0, sizeof(int) * (N + 3));
    for (int i = 0; i < N; ++i)
      if (!vis[X[i]]) {
        dfs(X[i], 0, 0);
      }
  }
  for (int i = 1; i <= N; ++i)
    if (C[i] == cc) {
      bool flag = true;
      if (flag) {
        printf("%d\n", i);
        return 0;
      }
    }
  printf("-1\n");
  return 0;
}
