Problem p03565 (python)

Fixed submission:
S = list(input())
T = list(input())
lenS = len(S)
lenT = len(T)
change = 0
for i in range(lenS-lenT,-1,-1):
    a = 1
    for j in range(lenT):
        if S[i+j] != T[j] and S[i+j] != '?':
            a = 0
    if a == 1:
        for j in range(lenT):
            S[i+j] = T[j]
        change = 1
        break

for i in range(lenS):
    if S[i] == '?':
        S[i] = 'a'

if change == 1:
    print(''.join(S))
else:
    print('UNRESTORABLE')

Buggy submission (verdict: Runtime Error):
S = input()
T = input()

N = len(S)
M = len(T)

if N < M:
    print('UNRESTORABLE')
    
else:

    ans = 'UNRESTORABLE'
    for i in range(N-M+1):
        make = True
        for j in range(M):
            if S[i+j] != '?' and S[i+j] != T[j]:
                make = 0
        if make:
            ans = S[:i] + T + S[i+M:]
    ans = list(ans)
    for i in range(N):
        if ans[i] == '?':
            ans[i] = 'a'
    print(''.join(ans))

Buggy submission (verdict: Runtime Error):
S = input()
T = input()

N = len(S)
M = len(T)

if N < M:
    print('UNRESTORABLE')
    exit()

ans = 'UNRESTORABLE'
for i in range(N-M+1):
    make = True
    for j in range(M):
        if S[i+j] != '?' and S[i+j] != T[j]:
            make = 0
    if make:
        ans = S[:i] + T + S[i+M:]
ans = list(ans)
for i in range(N):
    if ans[i] == '?':
        ans[i] = 'a'
print(''.join(ans))

Buggy submission (verdict: Runtime Error):
S = input()
T = input()

N = len(S)
M = len(T)

if N < M:
    print('UNRESTORABLE')
    exit()

ans = 'UNRESTORABLE'
for i in range(N-M+1):
    make = True
    for j in range(M):
        if S[i+j] == '?':
            continue
        if S[i+j] != T[j]:
            make = False
    if make:
        ans = S[:i] + T + S[i+M:]
ans = list(ans)
for i in range(N):
    if ans[i] == '?':
        ans[i] = 'a'
print(''.join(ans))

Buggy submission (verdict: Runtime Error):
S = input()
T = input()

N = len(S)
M = len(T)

if N < M:
    print('UNRESTORABLE')
    exit()

ans = 'UNRESTORABLE'
for i in range(N-M,-1,-1):
    make = True
    for j in range(M):
        if S[i+j] == '?':
            continue
        if S[i+j] != T[j]:
            make = False
    if make:
        ans = list(S[:i] + T + S[i+M:])
        break

for i in range(N):
    if ans[i] == '?':
        ans[i] = 'a'
print(''.join(ans))

Buggy submission (verdict: Runtime Error):
S = list(input())
T = list(input())

N = len(S)
M = len(T)

ans = 'UNRESTORABLE'

if N < M:
    print(ans)
    exit()

if N == M:
    ans = S
    for i in range(N):
        if S[i] == '?':
            S[i] = T[i]
        else:
            if S[i] != T[i]:
                ans = 'UNRESTORABLE'
    print(ans)
    exit()

for i in range(N-M,-1,-1):
    b = True
    for j in range(M):
        if S[i+j] == '?' or S[i+j] == T[j]:
            continue
        b = False
    if b:
        ans = S[:i] + T + S[i+j+1:]
for i in range(N):
    if ans[i] == '?':
        ans[i] = 'a'
print(''.join(ans))

Buggy submission (verdict: Runtime Error):
S = input()
T = input()

N = len(S)
M = len(T)

ans = 'UNRESTORABLE'

if N < M:
    print(ans)
    exit()

for i in range(N-M,-1,-1):
    b = True
    for j in range(M):
        if S[i+j] == '?' or S[i+j] == T[j]:
            continue
        b = False
    if b:
        ans = S[:i] + T + S[i+j+1:]
        break
ans = list(ans)
for i in range(N):
    if ans[i] == '?':
        ans[i] = 'a'
print(''.join(ans))

Buggy submission (verdict: Runtime Error):
S = input()
T = input()

N = len(S)
M = len(T)

ans = 'UNRESTORABLE'
for i in range(N-M,-1,-1):
    b = True
    for j in range(M):
        if S[i+j] == '?' or S[i+j] == T[j]:
            continue
        b = False
    if b:
        ans = S[:i] + T + S[i+j+1:]
        break
ans = list(ans)
for i in range(N):
    if ans[i] == '?':
        ans[i] = 'a'
print(''.join(ans))