#include <bits/stdc++.h>
using namespace std;
namespace SHENZHEBEI {
static const int GYN = 2333333;
char SZB[GYN], *S = SZB, *T = SZB;
inline char gc() {
  if (S == T) {
    T = (S = SZB) + fread(SZB, 1, GYN, stdin);
    if (S == T) return '\n';
  }
  return *S++;
}
inline long long read() {
  long long x = 0, g = 1;
  char ch = gc();
  for (; !isdigit(ch); ch = gc())
    if (ch == '-') g = -1;
  for (; isdigit(ch); ch = gc()) x = x * 10 - 48 + ch;
  return x * g;
}
inline void write(long long x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10) write(x / 10);
  putchar(x % 10 + '0');
}
inline char readchar() {
  char ch = gc();
  for (; isspace(ch); ch = gc())
    ;
  return ch;
}
inline long long readstr(char *s) {
  char ch = gc();
  int cur = 0;
  for (; isspace(ch); ch = gc())
    ;
  for (; !isspace(ch); ch = gc()) s[cur++] = ch;
  s[cur] = '\0';
  return cur;
}
void Print(long long *a, int s, int t) {
  for (int i = int(s); i <= int(t); ++i) printf("%lld ", a[i]);
  puts("");
}
void Print(int *a, int s, int t) {
  for (int i = int(s); i <= int(t); ++i) printf("%d ", a[i]);
  puts("");
}
void Print(char *a, int s, int t) {
  for (int i = int(s); i <= int(t); ++i) putchar(a[i]);
  puts("");
}
void writeln(long long x) {
  write(x);
  putchar('\n');
}
}  // namespace SHENZHEBEI
using namespace SHENZHEBEI;
const long long N = 1000010;
vector<long long> g[N];
long long vis[N], ans[N], id[N], in[N], n, m, Rt, ban[N];
bool dfs(long long x) {
  if (ban[x]) return 0;
  random_shuffle(g[x].begin(), g[x].end());
  in[x] = vis[x] = 1;
  for (int i = int(0); i < int(g[x].size()); ++i) {
    long long to = g[x][i];
    if (in[to]) return 1;
    if (vis[to]) continue;
    if (dfs(to)) return 1;
  }
  in[x] = 0;
  return 0;
}
double Zhouyuyang() { return 1.0 * clock() / CLOCKS_PER_SEC; }
bool work() {
  for (int i = int(1); i <= int(n); ++i) in[i] = vis[i] = 0;
  bool has = 0;
  for (int i = int(1); i <= int(n); ++i)
    if (!vis[i] && dfs(i)) {
      has = 1;
      break;
    }
  for (int i = int(1); i <= int(n); ++i) ans[i] &= in[i];
  if (has) return 0;
  return 1;
}
int main() {
  srand(time(0));
  n = read();
  m = read();
  for (; m--;) {
    long long x = read(), y = read();
    g[x].push_back(y);
  }
  for (int i = int(1); i <= int(n); ++i) ans[i] = 1;
  for (int i = int(1); i <= int(n); ++i) id[i] = i;
  random_shuffle(id + 1, id + n + 1);
  for (int i = int(1); i <= int(n); ++i)
    if (ans[id[i]] && (Zhouyuyang() <= 0.95)) {
      ban[id[i]] = 1;
      if (work()) return writeln(id[i]), 0;
      ban[id[i]] = 0;
    }
  puts("-1");
}
