#include <bits/stdc++.h>
#pragma GCC optimize("O2")
using namespace std;
const int maxn = 1e5 + 10;
int n, p;
string s;
int32_t main() {
  cin >> n >> p;
  cin >> s;
  bool ok = 0;
  for (int i = 0; i < n - p; i++) {
    if (ok) {
      if (s[i] == '.') s[i] = '1';
    } else if (s[i] == s[i + p] && s[i] != '.') {
      continue;
    } else {
      ok = 1;
      if (s[i] == '.' && s[i + p] == '.') {
        s[i] = '1';
        s[i + p] = '0';
      } else if (s[i] == '.' && s[i + p] == '0') {
        s[i] = '1';
      } else if (s[i] == '.' && s[i + p] == '1') {
        s[i] = '0';
      } else if (s[i] == '1' && s[i + p] == '.') {
        s[i + p] = '0';
      } else if (s[i] == '0' && s[i + p] == '.') {
        s[i + p] = '1';
      }
    }
  }
  for (int i = n - p; i < n; i++) {
    if (s[i] == '.') s[i] = '1';
  }
  if (!ok) {
    cout << "No\n";
    return 0;
  }
  cout << s << endl;
}
