package main
import (
"bufio"
"fmt"
"os"
)
const N = 5000
func main() {
in := bufio.NewReader(os.Stdin)
graph := make([][]int, N+1)
var n,m int
fmt.Fscan(in, &n,&m)
for i := 1;i<=m;i++{
var u,v int
fmt.Fscan(in, &u,&v)
graph[u] = append(graph[u], v)
graph[v] = append(graph[v], u)
}
dist := make([]int, N+1)
for i:=range dist {
dist[i] = -1
}
dist[1] = 0
q := []int{1}
for len(q) != 0 {
cur := q[0]
q = q[1:]
for _,v := range graph[cur] {
if dist[v] == -1 {
dist[v] = dist[cur] + 1
q = append(q, v)
}
}
}
fmt.Println(dist[n])
}