package main
import "fmt"
const INF = int(1e9)
func main() {
var n, m int
fmt.Scan(&n, &m)
g := make([][]int, n)
for i := 0; i < m; i++ {
var a, b int
fmt.Scan(&a, &b)
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)
}
}
cGFja2FnZSBtYWluCgppbXBvcnQgImZtdCIKCmNvbnN0IElORiA9IGludCgxZTkpCgpmdW5jIG1haW4oKSB7Cgl2YXIgbiwgbSBpbnQKCWZtdC5TY2FuKCZuLCAmbSkKCglnIDo9IG1ha2UoW11bXWludCwgbikKCWZvciBpIDo9IDA7IGkgPCBtOyBpKysgewoJCXZhciBhLCBiIGludAoJCWZtdC5TY2FuKCZhLCAmYikKCQlhLS0KCQliLS0KCQlnW2FdID0gYXBwZW5kKGdbYV0sIGIpCgkJZ1tiXSA9IGFwcGVuZChnW2JdLCBhKQoJfQoKCWJlc3QgOj0gSU5GCgoJZGlzdCA6PSBtYWtlKFtdaW50LCBuKQoJcGFyZW50IDo9IG1ha2UoW11pbnQsIG4pCglxIDo9IG1ha2UoW11pbnQsIG4pCgoJZm9yIHMgOj0gMDsgcyA8IG47IHMrKyB7CgkJZm9yIGkgOj0gMDsgaSA8IG47IGkrKyB7CgkJCWRpc3RbaV0gPSAtMQoJCQlwYXJlbnRbaV0gPSAtMQoJCX0KCgkJaGVhZCwgdGFpbCA6PSAwLCAwCgkJZGlzdFtzXSA9IDAKCQlxW3RhaWxdID0gcwoJCXRhaWwrKwoKCQlmb3IgaGVhZCA8IHRhaWwgewoJCQl2IDo9IHFbaGVhZF0KCQkJaGVhZCsrCgoJCQlpZiBkaXN0W3ZdKjIrMSA+PSBiZXN0IHsKCQkJCWNvbnRpbnVlCgkJCX0KCgkJCWZvciBfLCB0byA6PSByYW5nZSBnW3ZdIHsKCQkJCWlmIGRpc3RbdG9dID09IC0xIHsKCQkJCQlkaXN0W3RvXSA9IGRpc3Rbdl0gKyAxCgkJCQkJcGFyZW50W3RvXSA9IHYKCQkJCQlxW3RhaWxdID0gdG8KCQkJCQl0YWlsKysKCQkJCX0gZWxzZSBpZiBwYXJlbnRbdl0gIT0gdG8geyAKCQkJCQljeWNsZUxlbiA6PSBkaXN0W3ZdICsgZGlzdFt0b10gKyAxCgkJCQkJaWYgY3ljbGVMZW4gPCBiZXN0IHsKCQkJCQkJYmVzdCA9IGN5Y2xlTGVuCgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoKCWlmIGJlc3QgPT0gSU5GIHsKCQlmbXQuUHJpbnQoLTEpCgl9IGVsc2UgewoJCWZtdC5QcmludChiZXN0KQoJfQp9