Letters, Get Moving! Pt. 2 The first Letters, Get Moving! was very popular, but had limited participation. This one will be easier to solve, but hopefully involve some tricks in golfing.

You are given a string of only lowercase letters. For each letter, with position in the alphabet m, move it so it becomes the mth letter from the end. If the value of m is longer than the length of the string, move it to the very front. Output only the fully transformed string.

Examples:

"giraffe"


'g' is the 7th letter in the alphabet, it is already the 7th letter from the back, so leave it.
'i' is the 9th letter, since 9 is bigger than the length of the word, it goes to the front, so the string becomes igraffe
'r' is the 18th letter, like 'i' it goes to the front: rigaffe
'a' is the 1st letter, it goes to the very end: rigffea
'f' is the 6th letter, it becomes the 6th from the back: rfigfea
the next 'f' is also the 6th letter, so it also goes to 6th from the back : rffigea
'e' is the 5th letters, it goes to 5th from the back: rfefiga


"flower"


'f' (6) => flower
'l' (12) => lfower
'o' (15) => olfwer
'w' (23) => wolfer
'e' (5) => weolfr
'r' (18) => rweolf


"pineapple"


'p' (16) => pineapple
'i' (9) => ipneapple
'n' (14) => nipeapple
'e' (5) => nipaepple
'a' (1) => nipepplea
'p' (16) => pnipeplea
'p' (16) => ppnipelea
'l' (12) => lppnipeea
'e' (5) => lppneipea (make sure you move the e that hasn't been moved already! Here it doesn't matter, but below it does.)


Thanks to @Neil for improving the test cases with these 3 additions:

"pizza"


'p' (16) => pizza
'i' (9) => ipzza
'z' (26) => zipza
'z' (26) => zzipa (moving the second z!)
'a' (1) => zzipa


"abracadabra"


'a' (1) => bracadabraa
'b' (2) => racadabraba
'r' (18) => racadabraba
'a' (1) => rcadabrabaa
'c' (3) => radabrabcaa
'a' (1) => rdabrabcaaa
'd' (4) => rabrabcdaaa
'a' (1) => rbrabcdaaaa
'b' (2) => rrabcdaaaba
'r' (18) => rrabcdaaaba
'a' (1) => rrbcdaaabaa


"characters"


'c' (3) => haractecrs
'h' (8) => arhactecrs
'a' (1) => rhactecrsa
'r' (18) => rhactecrsa
'a' (1) => rhctecrsaa
'c' (3) => rhtecrscaa
't' (20) => trhecrscaa
'e' (5) => trhcrescaa
'r' (18) => rtrhcescaa
's' (19) => srtrhcecaa
CJam, 41 38 bytes

lee_S+W%\{Xa-X1='`-/(Xa+\L*+}fX1&gt;W%1f=


Test it here.