That should not be possible. I wrote a program that looked for the minimal solution brute force. 22 is the minimum.
This solution
a2, b4, c3, c2, d3, d2, d1, c2, c3, d3, d2, c2, d4, d3, c3, d4, c2, b2, c3, a2, a1, b2
would look like your solution but has 22 moves. There is a second way to get 22 moves but not less.
Have you found a bug or edited the Image?