def inpf() a=gets.chomp.split(" ").map(&:to_f)end

def inps() a=gets.chomp.split(" ")end

def copy(a) Marshal.load(Marshal.dump(a)) end

def kaijo(n,r = 10**9+7)(n < 2)? 1 : (2..n).inject{|memo,u|memo=(memo*u)%r} end

def na(n,d=0) Array.new(n,d)end

def na2(n,m,d=0) Array.new(n){Array.new(m,d)}end

def na3(n,m,l,d=0) Array.new(n){Array.new(m){Array.new(l,d)}}end

def inp() a=gets.chomp.split(" ").map(&:to_i)end

def r_up(a, b) (a+b-1)/b end

def bfs(t,n,root)
  return if @memo[n]
  @memo[n] = true
  @memo2[n] = true
  root = copy(root).push(n)
  t[n].each do |nex|
    if(@memo[nex])
      head = root.index(nex)
      ans = root[head...(root.size)]
      @ans = ans if(@ans == nil or @ans.size > ans.size)
    end
    bfs(t, nex, root)
  end
  @memo[n] = false
end

n,m= inp
t = na2(n+1,0)

@memo = na(n+1,false)
@memo2 = na(n+1,false)
@tail = nil
@ans = nil
m.times do |i|
  a,b = inp
  t[a].push(b)
end
(1..n).each do |i|
  next if(@memo2[i])
  bfs(t,i,[])
end
if(@ans == nil)
  p -1
  exit
end
p @ans.size
puts @ans