def H(s, k):
if k == 0:
yield s # only one n-bit string has Hamming distance 0 from s (itself)
elif s: # k > 0
for s_k_minus_one_flipped in H(s[:-1], k - 1):
yield s_k_minus_one_flipped + flip(s[-1]) # flip last bit
for s_k_flipped in H(s[:-1], k):
yield s_k_flipped + s[-1] # don't flip last bit
def flip(bit):
assert bit == "0" or bit == "1"
return "0" if bit == "1" else "1"
import sys
s, k = sys.stdin.read().split()
print(" ".join(H(s, int(k))))
ZGVmIEgocywgayk6CiAgICBpZiBrID09IDA6CiAgICAgICAgeWllbGQgcyAgIyBvbmx5IG9uZSBuLWJpdCBzdHJpbmcgaGFzIEhhbW1pbmcgZGlzdGFuY2UgMCBmcm9tIHMgKGl0c2VsZikKICAgIGVsaWYgczogIyBrID4gMAogICAgICAgIGZvciBzX2tfbWludXNfb25lX2ZsaXBwZWQgaW4gSChzWzotMV0sIGsgLSAxKToKICAgICAgICAgICAgeWllbGQgc19rX21pbnVzX29uZV9mbGlwcGVkICsgZmxpcChzWy0xXSkgICMgZmxpcCBsYXN0IGJpdAogICAgICAgIGZvciBzX2tfZmxpcHBlZCBpbiBIKHNbOi0xXSwgayk6CiAgICAgICAgICAgIHlpZWxkIHNfa19mbGlwcGVkICsgc1stMV0gICMgZG9uJ3QgZmxpcCBsYXN0IGJpdAoKCmRlZiBmbGlwKGJpdCk6CiAgICBhc3NlcnQgYml0ID09ICIwIiBvciBiaXQgPT0gIjEiCiAgICByZXR1cm4gIjAiIGlmIGJpdCA9PSAiMSIgZWxzZSAiMSIKCmltcG9ydCBzeXMKcywgayA9IHN5cy5zdGRpbi5yZWFkKCkuc3BsaXQoKQpwcmludCgiICIuam9pbihIKHMsIGludChrKSkpKQo=