#include <bits/stdc++.h>
using namespace std;

vector<int> graph[1001];
vector<int> cycle_track;

int degree[1001] = {0};
bool vis[1001] = {0};
bool mark[1001] = {0};

int spanner_sum = 0;


void process_cycle() {
	int min_degree_edge = 0;
	int curr_v = cycle_track[0];
	int min_degree_edge_v1 = 0, min_degree_edge_v2 = 0;
	//cout << endl;
	for (int i = 0; i < cycle_track.size(); i++) {
		//cout << cycle_track[i] << " ";
	}
	//cout << endl;
	for (int i = 1; i < cycle_track.size(); i++) {
		mark[curr_v] = true;
		int next_v = cycle_track[i];
		int curr_v_degree = degree[curr_v];
		int next_v_degree = degree[next_v];
		if (curr_v_degree + next_v_degree > min_degree_edge) {
			min_degree_edge = curr_v_degree + next_v_degree;
			min_degree_edge_v1 = curr_v;
			min_degree_edge_v2 = next_v;
		}
		curr_v = next_v;
	}
	degree[min_degree_edge_v1]--;
	degree[min_degree_edge_v2]--;
}


void find_cycle_dfs(int curr_v, int parent, int cycle_len, int curr_depth, int &e) {
	//cout << "cv "<<curr_v << ". Cycle len, Curr depth = " << cycle_len << " " << curr_depth << endl;
	vis[curr_v] = true;
	cycle_track.push_back(curr_v);
	//cout << endl;
	for (int i = 0; i < cycle_track.size(); i++) {
		//cout << cycle_track[i] << " ";
	}
	//cout << endl;
	for (int adj_v : graph[curr_v]) {
		if (!mark[adj_v] and adj_v != parent) {
			if (curr_depth <= cycle_len and !vis[adj_v]) {
				find_cycle_dfs(adj_v, curr_v, cycle_len, curr_depth + 1, e);
			} else if (curr_depth == cycle_len + 1 and vis[adj_v]) {
				//cout << "* " << cycle_len << " " << curr_v <<endl;				
				spanner_sum += 2* (cycle_len - 1);
				cycle_track.push_back(adj_v);
				process_cycle();
				e--;
				cycle_track.pop_back();
			}
		}
	}
	//cout << "end"<<curr_v << endl;
	vis[curr_v] = false;
	cycle_track.pop_back();
}


void dfs_helper(int v, int &e) {
	int cycle_len = 3;
	while (e > v - 1) {
		for (int i = 0; i < v; i++) {
//find_cycle_dfs(int curr_v, int parent, int cycle_len, int curr_depth) {
			find_cycle_dfs(i, i ,cycle_len, 1, e);
		}
		cycle_len++;
	}
}

int main() {
	int v, e;
	cin >> v >> e;
	for (int i = 0; i < e; i++) {
		int v1, v2;
		cin >> v1 >> v2;
		graph[v1].push_back(v2);
		degree[v1]++;
		graph[v2].push_back(v1);
		degree[v2]++;
	}
	for(int i = 0; i < 10; i++) {
		//cout << i << ": ";
		for(int j: graph[i]) {
			//cout << j << " ";
		}	
		//cout << endl;
	}
	dfs_helper(v, e);
	//cout << spanner_sum << endl;
}