/*
TASK:tri
LANG:C++
*/
#include<iostream>
#include<vector>
using namespace std;

vector<int> a[2048];
int mat[2048][2048];
int mintr;

int mch(int a, int b, int c)
{
	if(a+b+c<mintr)mintr=a+b+c;
}
int chk(int i)
{
	int k;
	for(int j=0; j<a[i].size(); j++)
		for(k=0; k<a[i].size(); k++)
			if(mat[ a[i][j] ][ a[i][k] ]) mch( a[i][j], a[i][k], i);
}

int main()
{
	int n, m;
	mintr=2000000000;
	scanf("%d%d", &n, &m);
	int i, j, k;
	int p, q;
	for(i=1; i<=m; i++)
	{
		scanf("%d%d", &p, &q);
		mat[p][q]=1;
		mat[q][p]=1;
		a[p].push_back(q);
		a[q].push_back(p);
	}
	for(i=1; i<=n; i++) chk(i);
	if(mintr==2000000000) printf("0\n");
	else printf("%d\n", mintr);
	return 0;
}
