Expressing an arbitrary permutation as a sequence of (insert, move, delete) operations
I suggest taking a look at the edit distance algorithm.  Instead of just calculating the distance, you'll want to record your minimum weight path through the array and return that.