Código Python:
Ver originaloriginal = "Hola como estas?"
sust = "HolAc0Moestas"
out = ""
lOriginal = len(original)
lSust = len(sust)
lmin = min(lOriginal, lSust)
lmax = max(lOriginal, lSust)
i = 0
j = 0
while i < lmin:
if original[i] == sust[j]:
out += original[i]
j += 1
elif original[i] == ' ':
out += ' '
else:
out += sust[j]
j += 1
i += 1
out += original[lmin:lmax + 1]
out += sust[lmin:lmax + 1]
print out
Muy simple, lo que pasa es que no tienes bien definido cuando agregas o cuando cambias. En general no tienes bien definido que va a hacer tu programa. No sabes cuando va a hacer un cambio o cuando va a agregar un carácter, tampoco tienes definido que es "casi iguales".
Por lo pronto te dejo un programa que hace lo que mas o menos pides.