#include <bits/stdc++.h>
using namespace std;
int S[40];
int dp[1 << 22], fr[1 << 22], pre[1 << 22];
int n, m;
void dfs(int x) {
  if (!dp[x]) return;
  printf("%d ", pre[x]);
  dfs(fr[x]);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    S[x] |= 1 << y - 1;
    S[y] |= 1 << x - 1;
  }
  for (int i = 0; i < (1 << n); i++) dp[i] = n + 1;
  dp[0] = 0;
  for (int i = 0; i < (1 << n); i++)
    for (int j = 1; j <= n; j++)
      if (!dp[i] && (S[j] & i) == i) dp[i | (1 << j - 1)] = 0;
  for (int i = 0; i < (1 << n); i++)
    for (int j = 1; j <= n; j++)
      if (i & (1 << j - 1))
        if (dp[i | S[j]] > dp[i] + 1) {
          dp[i | S[j]] = dp[i] + 1;
          fr[i | S[j]] = i;
          pre[i | S[j]] = j;
        }
  printf("%d\n", dp[(1 << n) - 1]);
  dfs((1 << n) - 1);
  return 0;
}
