#include <bits/stdc++.h>
using namespace std;
const int maxn = 22 + 1;
int n;
int m;
bool mask3[1 << maxn];
bool mask[1 << maxn];
int mask2[maxn];
vector<int> v[maxn];
bool mask4[1 << maxn];
int cnt;
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int a;
    int b;
    cin >> a >> b;
    a--;
    b--;
    v[a].push_back(b);
    v[b].push_back(a);
    mask2[a] |= (1 << b);
    mask2[b] |= (1 << a);
  }
  for (int i = 1; i < (1 << n); i++) {
    mask[i] = 1;
    for (int j = 0; j < n; j++) {
      if (((1 << j) & i) == 0 && (mask2[j] & i) == 0) {
        mask[i] = 0;
      }
    }
  }
  for (int i = 1; i < (1 << n); i++) {
    if (__builtin_popcount(i) == 1) {
      mask4[i] = 1;
    } else {
      for (int j = 0; j < n; j++) {
        if (mask4[i ^ (1 << j)] == true && (i & (1 << j)) != 0 &&
            (mask2[j] & i) != 0) {
          mask4[i] = true;
        }
      }
    }
  }
  for (int i = 1; i < (1 << n); i++) {
    mask3[i] = mask4[i] & mask[i];
  }
  int ans = (1 << 23);
  ans--;
  for (int i = 1; i < (1 << n); i++) {
    if (mask3[i] == true && __builtin_popcount(i) < __builtin_popcount(ans)) {
      ans = i;
    }
  }
  if (m == (n * (n - 1)) / 2) {
    cout << 0;
    return 0;
  }
  cout << __builtin_popcount(ans) << endl;
  for (int i = 0; i < n; i++) {
    if (((1 << i) & ans) != 0) {
      cout << i + 1 << " ";
    }
  }
  return 0;
}
