#include <bits/stdc++.h>   int g[(1 << 22)][4], f[23], n, m, a, b;   void output(int v, int u) {     if (u == 0) return;     if (v == 0) return;     output(g[v][1], u - 1);     printf( %d  , g[v][2]);   }   int cnt(int v) {     int ret = 0;     for (; v; v >>= 1)       if (v & 1) ret++;     return ret;   }   int main(void) {     memset(g, 127, sizeof(g));     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; i++)       scanf( %d%d , &a, &b), f[a] |= 1 << (b - 1), f[b] |= 1 << (a - 1);     for (int i = 1; i <= n; i++)       f[i] |= 1 << (i - 1), g[f[i]][1] = 0, g[f[i]][2] = i, g[f[i]][3] = 0;     for (int i = 1; i <= n; i++) g[f[i]][3]++;     for (int i = 1; i <= n; i++)       if (g[f[i]][3] == cnt(f[i]))         g[f[i]][0] = 0;       else         g[f[i]][0] = 1;     for (int i = 1; i <= (1 << n) - 1; i++)       if (g[i][0])         for (int j = 1; j <= n; j++)           if ((i | (1 << (j - 1))) == i) {             int gf = i | f[j];             if (g[gf][0] > g[i][0] + 1)               g[gf][0] = g[i][0] + 1, g[gf][1] = i, g[gf][2] = j;           }     printf( %d n , g[(1 << n) - 1][0]);     output((1 << n) - 1, g[(1 << n) - 1][0]);     printf(  n );     return 0;   }   