#Pepe, 47 bytes
Pepe, 47 bytes
REREEeRErEErREeeEeeeeEREEeeREEeereeREEEEeeEReee
Explanation:
REREEeRE # Push 0,then input (str),then 0 -> (R)
# The zeroes are pushed to correct the inserting
rEE # Begin loop labelled 0 -> (r)
rREeeEeeeeE # Push "!" -> (R)
# r flag inserts it instead of pushing
REEeeREEee # Move pointer pos 2 steps forward -> (R)
ree # Loop while (R) != 0
REEEEeeE # Remove characters of (R) that are in stack of (r)
# Removes the 0 in (R)
Reee # Output (R)