#include <bits/stdc++.h>
using namespace std;
map<int, int> added_nums;
int N, M, odd_counter = 0, even_counter = 0;
int additional_odd = 1, additional_even = 2;
int get_next_odd() {
  while (added_nums[additional_odd]) additional_odd += 2;
  if (additional_odd > M)
    return -1;
  else {
    additional_odd += 2;
    return additional_odd - 2;
  }
}
int get_next_even() {
  while (added_nums[additional_even]) additional_even += 2;
  if (additional_even > M)
    return -1;
  else {
    additional_even += 2;
    return additional_even - 2;
  }
}
int main() {
  bool isOddValue;
  int nextNumber, changed = 0;
  scanf("%d%d", &N, &M);
  vector<int> main_nums(N);
  for (int i = 0; i < N; ++i) {
    scanf("%d", &main_nums[i]);
    if (!added_nums[main_nums[i]]) {
      added_nums[main_nums[i]] = i + 1;
      odd_counter += main_nums[i] % 2 != 0;
      even_counter += main_nums[i] % 2 == 0;
    } else {
      main_nums[i] = -1;
    }
  }
  for (int i = 0; i < N; ++i) {
    if (main_nums[i] == -1) {
      if (odd_counter > even_counter) {
        even_counter++;
        nextNumber = get_next_even();
      } else {
        odd_counter++;
        nextNumber = get_next_odd();
      }
      if (nextNumber == -1) {
        printf("-1");
        return 0;
      } else {
        main_nums[i] = nextNumber;
        added_nums[main_nums[i]] = i + 1;
        changed++;
      }
    }
  }
  for (int i = 0; i < N && odd_counter != even_counter; ++i) {
    isOddValue = main_nums[i] % 2 != 0;
    if (odd_counter > even_counter && isOddValue) {
      odd_counter--;
      even_counter++;
      nextNumber = get_next_even();
    } else if (even_counter > odd_counter && !isOddValue) {
      odd_counter++;
      even_counter--;
      nextNumber = get_next_odd();
    } else {
      continue;
    }
    if (nextNumber == -1) {
      printf("-1");
      return 0;
    } else {
      changed++;
      main_nums[i] = nextNumber;
    }
  }
  if (odd_counter != even_counter) {
    printf("-1");
    return 0;
  }
  printf("%d\n", changed);
  for (int i = 0; i < N; ++i) {
    printf("%d ", main_nums[i]);
  }
}
