You can do this with half material, half blueprint. You can make an array of the textures and use a dynamic material instance
I think if you wanted to really badly, you could do this in the material alone. But that would really be a bit of an academic exercise.