#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0.0);
const double eps = 1e-7;
const int MAXN = 1e5 + 10;
int dx[] = {1, 0, 0, -1, -1, -1, 1, 1};
int dy[] = {0, 1, -1, 0, 1, -1, 1, -1};
map<int, int> st;
int m;
int fi(int a) {
  while (1) {
    if (a > m) return -1;
    if (st[a] == 0) return a;
    a += 2;
  }
}
int a[200009], arr[200009];
int main() {
  std::ios_base::sync_with_stdio(false);
  cin.tie();
  int n;
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> arr[i];
  int next1 = 1, next2 = 2;
  int u = n / 2;
  int even = 0;
  int odd = 0, cnt = 0;
  for (int i = 0; i < n; i++) {
    if (even == u) break;
    if (arr[i] % 2 == 0) {
      if (st[arr[i]] == 0)
        st[arr[i]] = 1, even++, a[i] = 1;
      else {
        cnt++;
        next2 = fi(next2);
        if (next2 == -1) {
          puts("-1");
          return 0;
        }
        even++;
        arr[i] = next2;
        st[next2] = 1;
        a[i] = 1;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    if (odd == u) break;
    if (arr[i] % 2) {
      if (st[arr[i]] == 0)
        st[arr[i]] = 1, odd++, a[i] = 1;
      else {
        next1 = fi(next1);
        cnt++;
        if (next1 == -1) {
          puts("-1");
          return 0;
        }
        odd++;
        arr[i] = next1;
        st[next1] = 1;
        a[i] = 1;
      }
    }
  }
  if (odd > even) next1 = next2;
  for (int i = 0; i < n; i++)
    if (a[i] == 0) {
      next1 = fi(next1);
      if (next1 == -1) {
        puts("-1");
        return 0;
      }
      arr[i] = next1;
      cnt++;
      st[next1] = 1;
    }
  cout << cnt << endl;
  for (int i = 0; i < n; i++) cout << arr[i] << " ";
}
