**Mumps, <strike>91</strike>, <strike>86</strike>, <strike>82</strike>,79** --------------------------------- r t i t?1A.1"." s a=$A(t),p=a>90*32+65 f i=1:1:25 { w *(a+i-p#26+p) w:t["." !} Not such a modern language ;) I'm sure there's a bit of optimization space left.. Explanation: r t read input i t?1A.1"." check if t matches the required input s a=$A(t),p=a>90*32+65 f i=1:1:25 { w *(a+i-p#26+p) w:t["." !} basic for loop through the alphabet. Note that mumps is strictly evaluating left to right. True=1, so you get 65 or 97 as a result for p, # is the modulo operator tests: USER>d ^golf d.e f g h i j k l m n o p q r s t u v w x y z a b c USER>d ^golf tuvwxyzabcdefghijklmnopqrs USER>d ^golf h.i j k l m n o p q r s t u v w x y z a b c d e f g USER>d ^golf hallo USER> (you'll need a mumps runtime env, ie Caché to run this this) edit: bold heading edit: had a wrong solution, fixed now. Thanks to rtfs and Averroees for pointing this out