importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;publicclassMain{// 采用邻接表存储边staticList<List<Integer>> list;staticboolean[] visited;privatestaticvoiddfs(int start){// 到达过的节点不再重复搜索if(visited[start]){return;}
visited[start]=true;List<Integer> canReach = list.get(start);for(int i =0; i < canReach.size(); i++){Integer end = canReach.get(i);dfs(end);}}publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);int n = sc.nextInt();int k = sc.nextInt();// 取n + 1,为了让索引和节点对应
list =newArrayList<>(n +1);for(int i =0; i < n +1; i++){
list.add(newArrayList<>());}
visited =newboolean[n +1];for(int i =0; i < k; i++){int start = sc.nextInt();int end = sc.nextInt();
list.get(start).add(end);}dfs(1);int res =1;for(int i =1; i < visited.length; i++){if(!visited[i]){
res =-1;break;}}System.out.println(res);}}