#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #include using namespace std; int mp[101][101], n, m, ans = 0x3f3f3f3f; int arr[101][101]; int cnt[101]; void dfs(int p, int r) { if (r >= ans) return; if (p > n) ans = min(ans, r); else { for (int i = 1; i <= r; i++) { bool flag = true; for (int j = 0; j < cnt[i] && flag; j++) if (mp[p][arr[i][j]]) flag = false; if (flag) { arr[i][cnt[i]++] = p; dfs(p + 1, r); cnt[i]--; } } arr[r + 1][cnt[r + 1]++] = p; dfs(p + 1, r + 1); cnt[r + 1]--; } } int main() { scanf("%d%d", &n, &m); for (int i = 0, a, b; i < m; i++) scanf("%d%d", &a, &b), mp[a][b] = mp[b][a] = 1; dfs(1, 0); printf("%d", ans); return 0; }