Algorithm for fewest moves in 1’s, 10’s, 100’s, etc

I’m building a math application (not homework) and I want to build a component that allows players to drag-and-drop 1’s, 10’s, 100’s, etc to complete problems and a bonus reward if they do it in the fewest moves possible–How can I calculate this? e.g.

50 + X = 96 

where X is a randomly generated integer and the player is modifying X during play. So, the player needs to make X=46, but starts at 121. For example,

if X is initially 121, and player needs to get to 46 

player thinks, “cool, i’ll just subtract 75”

remove 7x 10's, remove 5x 1's - 12 moves 

but it turns out, there’s a faster way to do it:

remove 1x 100's, add 2x 10's, add 5x 1's - 8 moves 

Is there an existing algorithm for this? It would be helpful to calculate this for anything up to 10,000 where I can calculate the minimum number of moves required.