Animating spheres to form a certain shape?

I want to create an animation of a square array of about 50 spheres, that can move in a choregraphy to form different shapes, like text, a heart, or a smiley face.

The spheres have to transition smoothly from one shape to another, i understand that i can achieve this manually keyframing the location and rotation of each sphere, but i was wondering if there was a more intuitive way. Thanks!

Animate Particles Along a Curve in Blender (Without Curve Guide)

Particles along a curve with random colors in Eevee