func best_shuffle(String orig) -> (String, Number) { var s = orig.chars var t = s.shuffle for i (^s) { for j (^s) { if (i!=j && t[i]!=s[j] && t[j]!=s[i]) { t[i, j] = t[j, i] break } } } (t.join, s ~Z== t -> count(true)) } for word () { var (sword, score) = best_shuffle(word) "%-12s %12s: %d\n".printf(word, sword, score) }