#include <bits/stdc++.h>
using namespace std;
const static int MAXN = 5010;
int n, m, GO[MAXN];
set<int> G[MAXN];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m;
  int i, a, b, j;
  for (i = 0; i < m; i++) {
    cin >> a >> b;
    a--;
    b--;
    G[a].insert(b);
    G[b].insert(a);
  }
  for (i = 0; i < n; i++) GO[i] = G[i].size();
  int mn = INT_MAX;
  for (i = 0; i < n; i++)
    if (GO[i] > 1) {
      for (int x : G[i])
        if (GO[i] > 1) {
          for (int y : G[x])
            if (GO[i] > 1) {
              if (i != y && G[i].count(y))
                mn = min(GO[i] + GO[x] + GO[y] - 6, mn);
            }
        }
    }
  cout << ((mn == INT_MAX) ? -1 : mn) << endl;
}
