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])
}