#include <bits/stdc++.h>
using namespace std;
int n, m, aux[25], dp[5123456], mark = 1;
pair<int, int> print[5123456];
vector<int> grafo[25], ans;
void print_ans(int mask) {
  if (!mask) {
    cout << "\n";
    return;
  }
  cout << print[mask].second << " ";
  print_ans(print[mask].first);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m;
  for (int i = 1, a, b; i <= m; i++) {
    cin >> a >> b;
    a--, b--;
    aux[a] |= (1 << b);
    aux[b] |= (1 << a);
  }
  for (int i = 0; i < n; i++) aux[i] |= (1 << i);
  for (int i = 0; i <= (1 << n); i++) dp[i] = 2000000000;
  dp[0] = 0;
  for (int i = 0; i < n; i++)
    if (aux[i] < (1 << n) - 1) mark = false;
  if (mark || n == 1)
    cout << "0\n";
  else {
    for (int mask = 0; mask < (1 << n); mask++) {
      if (dp[mask] == 2000000000) continue;
      for (int x = 0; x < n; x++) {
        if ((((mask >> x) & 1) || mask == 0) &&
            dp[mask | aux[x]] > dp[mask] + 1) {
          dp[mask | aux[x]] = dp[mask] + 1;
          print[mask | aux[x]] = pair<int, int>(mask, x + 1);
        }
      }
    }
    cout << dp[(1 << n) - 1] << "\n";
    print_ans((1 << n) - 1);
  }
}
