 ### Runtime error

""" step1: standard inputs """

``````while True:
try:
str_Num = input()
x, y = (int(x) for x in input().split())

N = len(str_Num)
``````

""" step2: 2.1 create a list, called smallest. It has the same length as the str_Num from input, with initial value zeros, the purpose of it, for the positions/indexes that have "?", replace the value from 0-9 to find the smallest value for str_Num, s.t. int(str_Num) % X = Y 2.2 create a list of index_hasQuestionMark, treat the list as a stack. FILO. iterator the str_Num, the last position of the "?" push into the list, would be the smallest places/digits for the str_Num to change. ex: 12?4?6, the smallest places here is at index = 4, which is the tens place """

``````        smallest =  * N
list_index_hasQuestionMark = []

for pos in range(N):
digit = str_Num[pos]
if digit == "?":
list_index_hasQuestionMark.append(pos)
``````

""" step3: replace all of the "?" to "0", if the first digit is 0, replace to 1. initial state for str_Num """

``````        str_Num = str_Num.replace("?", "0")

if str_Num == "0":
str_Num = "1" + str_Num[1:]
``````

""" Step4: ---- pop the value from the stack: list_index_hasQuestionMark as a pos ---- check the value under smallest[pos] and put in the str_num to see if it works for int(str_Num) % X = Y ---- if equal: break inner loop and outer loop ---- else: increment the value by 1 in the smallest[pos] until reach to 9 """

``````        isFound = False
while (list_index_hasQuestionMark):
pos = list_index_hasQuestionMark.pop()
while (smallest[pos] != 9):
num = int(str_Num)
reminder = num % x
if (reminder != y):
smallest[pos] += 1
str_Num = str_Num[:pos] + str(smallest[pos]) + str_Num[pos + 1:]

else:
isFound = True
break
if isFound:
break

print(str_Num)

except EOFError:
break
``````