#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7, siz = 1 << 23;
long long t, n, m, k, a[siz], dp[siz];
bool vis[30];
long long go(long long mask) {
  if (mask == (1 << n) - 1) return 0;
  if (dp[mask] != -1) return dp[mask];
  long long ret = 1e9;
  for (long long i = 0; i < n; i++) {
    if (!vis[i] and (!mask or mask & (1 << i))) {
      vis[i] = 1;
      ret = min(ret, 1 + go(mask | a[i]));
      vis[i] = 0;
    }
  }
  return dp[mask] = ret;
}
void print(long long mask) {
  if (mask == (1 << n) - 1) return;
  for (long long i = 0; i < n; i++) {
    if (!vis[i] and (!mask or mask & (1 << i))) {
      if (dp[mask] == 1 + dp[mask | a[i]]) {
        cout << i + 1 << " ";
        vis[i] = 1;
        print(mask | a[i]);
        return;
      }
    }
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m;
  if (m == n * (n - 1) / 2) return cout << 0, 0;
  for (long long i = 1; i <= m; i++) {
    long long x, y;
    cin >> x >> y;
    x--;
    y--;
    a[x] |= (1 << y);
    a[y] |= (1 << x);
  }
  for (long long i = 0; i < n; i++) a[i] |= (1 << i);
  memset(dp, -1, sizeof dp);
  cout << go(0) << endl;
  dp[(1 << n) - 1] = 0;
  print(0);
}
