// Online C++ compiler to run C++ program online
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,p; cin>>n>>p; string s; cin>>s;
int it1=0; int it2=p;int b=0;
while(it2<n){
if(s[it1]=='.'||s[it2]=='.'){ b=1; break;}
if(s[it1]!=s[it2]){ b=1;break;}
it1++;it2++; }
if(b==0){ cout<<"NO"; return 0;}
unordered_map<char,char>m; m['0']='1';m['1']='0'; it1=0;it2=p;
for(int i=0;i<=p-1;i++){ if(s[i]=='.') {
if(i+p<n){ if(s[i+p]!='.') s[i]=m[s[i+p]]; else s[i]='0'; }
else{ s[i]='0'; } }
}
while(it2<n){
if(s[it2]=='.') { s[it2]=m[s[it1]];}
it1++; it2++;
}
cout<<s;
return 0;
}
669A - Little Artem and Presents | 691B - s-palindrome |
851A - Arpa and a research in Mexican wave | 811A - Vladik and Courtesy |
1006B - Polycarp's Practice | 1422A - Fence |
21D - Traveling Graph | 1559B - Mocha and Red and Blue |
1579C - Ticks | 268B - Buttons |
898A - Rounding | 1372B - Omkar and Last Class of Math |
1025D - Recovering BST | 439A - Devu the Singer and Churu the Joker |
1323A - Even Subset Sum Problem | 1095A - Repeating Cipher |
630F - Selection of Personnel | 630K - Indivisibility |
20B - Equation | 600B - Queries about less or equal elements |
1015A - Points in Segments | 1593B - Make it Divisible by 25 |
680C - Bear and Prime 100 | 1300A - Non-zero |
1475E - Advertising Agency | 1345B - Card Constructions |
1077B - Disturbed People | 653A - Bear and Three Balls |
794A - Bank Robbery | 157A - Game Outcome |