#include <bits/stdc++.h>
using namespace std;
long long n, m, ar[200005];
map<long long, long long> ma;
long long odd = 1, even = 0;
long long no = 0, ne = 0;
signed main() {
  ma[0] = 2;
  ios::sync_with_stdio(0);
  cin.tie(NULL), cout.tie(NULL);
  cin >> n >> m;
  for (long long i = 0; i < n; i++) {
    cin >> ar[i];
    if (ar[i] % 2)
      no++;
    else
      ne++;
    ma[ar[i]]++;
  }
  long long ans = 0;
  for (long long i = 0; i < n; i++) {
    if (ma[ar[i]] == 1) continue;
    long long fl = 1;
    if (no == ne) {
      if (ar[i] % 2) fl = 2;
    }
    ans++;
    if (no < ne || fl == 2) {
      while (ma.find(odd) != ma.end()) odd += 2;
      ma[ar[i]]--;
      if (ar[i] % 2)
        no--;
      else
        ne--;
      no++;
      ar[i] = odd;
      ma[odd] = 1;
    } else {
      while (ma.find(even) != ma.end()) even += 2;
      ma[ar[i]]--;
      if (ar[i] % 2)
        no--;
      else
        ne--;
      ne++;
      ar[i] = even;
      ma[even] = 1;
    }
  }
  if (odd > m || even > m) {
    cout << "-1";
    return 0;
  }
  for (long long i = 0; i < n; i++) {
    if (ne == no) break;
    if (ne > no) {
      if (ar[i] % 2) continue;
      ans++;
      while (ma.find(odd) != ma.end()) odd += 2;
      ma[ar[i]]--;
      ne--;
      no++;
      ar[i] = odd;
      ma[odd] = 1;
    } else {
      if (ar[i] % 2 == 0) continue;
      ans++;
      while (ma.find(even) != ma.end()) even += 2;
      ma[ar[i]]--;
      ne++;
      no--;
      ar[i] = even;
      ma[even] = 1;
    }
  }
  if (odd > m || even > m) {
    cout << "-1";
  } else {
    cout << ans << "\n";
    for (long long i = 0; i < n; i++) cout << ar[i] << " ";
  }
  return 0;
}
