#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int MAX_V = 21;
vector<vector<int>> adj;
bool visit[MAX_V];
int N;
int go(int vn, int cnt) {
if (vn == N) return cnt;
if (visit[vn]) return go(vn + 1, cnt);
int res = 0;
for (int to : adj[vn])
if (!visit[to]) {
visit[to] = 1;
res = max(res, go(vn + 1, cnt + 1));
visit[to] = 0;
}
return max(res, go(vn + 1, cnt));
}
int main() {
int M, u, v;
scanf("%d%d", &N, &M);
adj = vector<vector<int>>(N);
while (M--) {
scanf("%d%d", &u, &v);
u--, v--;
if (u > v) swap(u, v);
adj[u].push_back(v);
}
int res = go(0, 0);
res *= 2; // 매칭은 두 정점이 이어졌다는 것.
res = N > res ? (res + 1) : res; // 로봇댄스 출 친구 섭외
printf("%d", res);
return 0;
}