#include <bits/stdc++.h>
using namespace std;
vector <int> g[1005];
int n, m, vis[1005], t, minn = 1e9;
void dfs(int x, int c)
{
if (vis[x])
{
if (x == t && c != 1)
{
minn = min(minn, c);
}
return;
}
vis[x] = 1;
for(int i = 0; i < g[x].size(); i++)
{
int nx = g[x][i];
dfs(nx, c + 1);
}
return;
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= m; i++)
{
int a, b;
scanf("%d%d", &a, &b);
g[a].push_back(b);
g[b].push_back(a);
}
for(int i = 1; i <= n; i++)
{
t = i;
memset(vis, 0, sizeof(vis));
dfs(t, 1);
}
if (minn != (int)(1e9))
{
cout << minn;
}
else
{
cout << -1;
}
return 0;
}