package main
import (
"bufio"
"fmt"
"os"
)
const INF = int(1e9)
func main() {
in := bufio.NewReader(os.Stdin)
var n, m int
if _, err := fmt.Fscan(in, &n, &m); err != nil {
// вообще нет входа
fmt.Print(-1)
return
}
g := make([][]int, n)
// Читаем ДО m рёбер, но если ввод закончился — не зависаем
for i := 0; i < m; i++ {
var a, b int
if _, err := fmt.Fscan(in, &a, &b); err != nil {
break // EOF или другой конец ввода
}
a--
b--
if a >= 0 && a < n && b >= 0 && b < n && a != b {
g[a] = append(g[a], b)
g[b] = append(g[b], a)
}
}
best := INF
dist := make([]int, n)
parent := make([]int, n)
q := make([]int, n)
for s := 0; s < n; s++ {
for i := 0; i < n; i++ {
dist[i] = -1
parent[i] = -1
}
head, tail := 0, 0
dist[s] = 0
q[tail] = s
tail++
for head < tail {
v := q[head]
head++
if dist[v]*2+1 >= best {
continue
}
for _, to := range g[v] {
if dist[to] == -1 {
dist[to] = dist[v] + 1
parent[to] = v
q[tail] = to
tail++
} else if parent[v] != to {
cycleLen := dist[v] + dist[to] + 1
if cycleLen < best {
best = cycleLen
}
}
}
}
}
if best == INF {
fmt.Print(-1)
} else {
fmt.Print(best)
}
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImJ1ZmlvIgoJImZtdCIKCSJvcyIKKQoKY29uc3QgSU5GID0gaW50KDFlOSkKCmZ1bmMgbWFpbigpIHsKCWluIDo9IGJ1ZmlvLk5ld1JlYWRlcihvcy5TdGRpbikKCgl2YXIgbiwgbSBpbnQKCWlmIF8sIGVyciA6PSBmbXQuRnNjYW4oaW4sICZuLCAmbSk7IGVyciAhPSBuaWwgewoJCS8vINCy0L7QvtCx0YnQtSDQvdC10YIg0LLRhdC+0LTQsAoJCWZtdC5QcmludCgtMSkKCQlyZXR1cm4KCX0KCglnIDo9IG1ha2UoW11bXWludCwgbikKCgkvLyDQp9C40YLQsNC10Lwg0JTQniBtINGA0ZHQsdC10YAsINC90L4g0LXRgdC70Lgg0LLQstC+0LQg0LfQsNC60L7QvdGH0LjQu9GB0Y8g4oCUINC90LUg0LfQsNCy0LjRgdCw0LXQvAoJZm9yIGkgOj0gMDsgaSA8IG07IGkrKyB7CgkJdmFyIGEsIGIgaW50CgkJaWYgXywgZXJyIDo9IGZtdC5Gc2NhbihpbiwgJmEsICZiKTsgZXJyICE9IG5pbCB7CgkJCWJyZWFrIC8vIEVPRiDQuNC70Lgg0LTRgNGD0LPQvtC5INC60L7QvdC10YYg0LLQstC+0LTQsAoJCX0KCQlhLS0KCQliLS0KCQlpZiBhID49IDAgJiYgYSA8IG4gJiYgYiA+PSAwICYmIGIgPCBuICYmIGEgIT0gYiB7CgkJCWdbYV0gPSBhcHBlbmQoZ1thXSwgYikKCQkJZ1tiXSA9IGFwcGVuZChnW2JdLCBhKQoJCX0KCX0KCgliZXN0IDo9IElORgoKCWRpc3QgOj0gbWFrZShbXWludCwgbikKCXBhcmVudCA6PSBtYWtlKFtdaW50LCBuKQoJcSA6PSBtYWtlKFtdaW50LCBuKQoKCWZvciBzIDo9IDA7IHMgPCBuOyBzKysgewoJCWZvciBpIDo9IDA7IGkgPCBuOyBpKysgewoJCQlkaXN0W2ldID0gLTEKCQkJcGFyZW50W2ldID0gLTEKCQl9CgoJCWhlYWQsIHRhaWwgOj0gMCwgMAoJCWRpc3Rbc10gPSAwCgkJcVt0YWlsXSA9IHMKCQl0YWlsKysKCgkJZm9yIGhlYWQgPCB0YWlsIHsKCQkJdiA6PSBxW2hlYWRdCgkJCWhlYWQrKwoKCQkJaWYgZGlzdFt2XSoyKzEgPj0gYmVzdCB7CgkJCQljb250aW51ZQoJCQl9CgoJCQlmb3IgXywgdG8gOj0gcmFuZ2UgZ1t2XSB7CgkJCQlpZiBkaXN0W3RvXSA9PSAtMSB7CgkJCQkJZGlzdFt0b10gPSBkaXN0W3ZdICsgMQoJCQkJCXBhcmVudFt0b10gPSB2CgkJCQkJcVt0YWlsXSA9IHRvCgkJCQkJdGFpbCsrCgkJCQl9IGVsc2UgaWYgcGFyZW50W3ZdICE9IHRvIHsKCQkJCQljeWNsZUxlbiA6PSBkaXN0W3ZdICsgZGlzdFt0b10gKyAxCgkJCQkJaWYgY3ljbGVMZW4gPCBiZXN0IHsKCQkJCQkJYmVzdCA9IGN5Y2xlTGVuCgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoKCWlmIGJlc3QgPT0gSU5GIHsKCQlmbXQuUHJpbnQoLTEpCgl9IGVsc2UgewoJCWZtdC5QcmludChiZXN0KQoJfQp9CgoKCg==