How do I remove a part of a texture to reveal another texture underneath, all in real time?

Imagine there is a wall covered in dirt, and using a water hose (or throwing a bucket of water) you clean up the dirt to reveal the surface underneath, while taking into account the collision area where the water particles come into contact with the wall.

I basically want to know how to make a “stain removal” in UE4. I figured there must be a way to achieve this through decals or masks, but I’m not 100% sure how…