#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
template<typename T>
void minimize(T& a, const T& b) {
if (b < a) a = b;
}
const int N = 25e2 + 5;
int n, m;
vector<int> adj[N];
bool vis[N];
int level[N];
void bfs(int s, int& ans) {
memset(vis, 0, sizeof vis);
memset(level, -1, sizeof level);
queue<int> q;
vis[s] = true;
level[s] = 0;
q.push(s);
while (!q.empty()) {
int u = q.front(); q.pop();
for (int v : adj[u]) {
if (!vis[v]) {
vis[v] = true;
level[v] = level[u] + 1;
q.push(v);
}
else if (level[v] >= level[u]) {// (level[u] == level[v] || level[u] + 1 == level[v])
int cycle_len = level[u] + 1 + level[v]; // s -> u -> v -> s
minimize(ans, cycle_len);
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
// Với mỗi đỉnh s từ 1 đến n ta tìm chu trình ngắn nhất đi qua s
int ans = INF;
for (int s = 1; s <= n; s++) bfs(s, ans);
if (ans == INF) ans = -1;
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBtaW5pbWl6ZShUJiBhLCBjb25zdCBUJiBiKSB7CglpZiAoYiA8IGEpIGEgPSBiOyAKfQoKY29uc3QgaW50IE4gPSAyNWUyICsgNTsgCgppbnQgbiwgbTsgIAp2ZWN0b3I8aW50PiBhZGpbTl07IApib29sIHZpc1tOXTsgCmludCBsZXZlbFtOXTsgCgp2b2lkIGJmcyhpbnQgcywgaW50JiBhbnMpIHsKCW1lbXNldCh2aXMsIDAsIHNpemVvZiB2aXMpOyAgIAoJbWVtc2V0KGxldmVsLCAtMSwgc2l6ZW9mIGxldmVsKTsgIAoKCXF1ZXVlPGludD4gcTsgIAoJdmlzW3NdID0gdHJ1ZTsgIAoJbGV2ZWxbc10gPSAwOyAgICAKCXEucHVzaChzKTsgCgoJd2hpbGUgKCFxLmVtcHR5KCkpIHsKCQlpbnQgdSA9IHEuZnJvbnQoKTsgcS5wb3AoKTsgIAoKCQlmb3IgKGludCB2IDogYWRqW3VdKSB7CgkJCWlmICghdmlzW3ZdKSB7CgkJCQl2aXNbdl0gPSB0cnVlOyAKCQkJCWxldmVsW3ZdID0gbGV2ZWxbdV0gKyAxOyAKCQkJCXEucHVzaCh2KTsgCgkJCX0KCQkJZWxzZSBpZiAobGV2ZWxbdl0gPj0gbGV2ZWxbdV0pIHsvLyAobGV2ZWxbdV0gPT0gbGV2ZWxbdl0gfHwgbGV2ZWxbdV0gKyAxID09IGxldmVsW3ZdKSAKCQkJCWludCBjeWNsZV9sZW4gPSBsZXZlbFt1XSArIDEgKyBsZXZlbFt2XTsgLy8gcyAtPiB1IC0+IHYgLT4gcwoJCQkJbWluaW1pemUoYW5zLCBjeWNsZV9sZW4pOyAKCQkJfQoJCX0KCX0KfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCglmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewoJCWludCB1LCB2OyAKCQljaW4gPj4gdSA+PiB2OyAKCQlhZGpbdV0ucHVzaF9iYWNrKHYpOyAKCQlhZGpbdl0ucHVzaF9iYWNrKHUpOyAKCX0KCgkvLyBW4bubaSBt4buXaSDEkeG7iW5oIHMgdOG7qyAxIMSR4bq/biBuIHRhIHTDrG0gY2h1IHRyw6xuaCBuZ+G6r24gbmjhuqV0IMSRaSBxdWEgcwoJaW50IGFucyA9IElORjsgCglmb3IgKGludCBzID0gMTsgcyA8PSBuOyBzKyspIGJmcyhzLCBhbnMpOwoKCWlmIChhbnMgPT0gSU5GKSBhbnMgPSAtMTsgIAoJY291dCA8PCBhbnMgPDwgJ1xuJzsgCn0=