text: import random
  
  def count(w1,wnew):
      return sum(c1==c2 for c1,c2 in zip(w1, wnew))
  
  def best_shuffle(w):
      wnew = list(w)
      n = len(w)
      rangelists = (list(range(n)), list(range(n)))
      for r in rangelists:
          random.shuffle(r)
      rangei, rangej = rangelists
      for i in rangei:
          for j in rangej:
              if i != j and wnew[j] != wnew[i] and w[i] != wnew[j] and w[j] != wnew[i]:
                  wnew[j], wnew[i] = wnew[i], wnew[j]
                  break
      wnew = ''.join(wnew)
      return wnew, count(w, wnew)
  
  
  if __name__ == '__main__':
      test_words = ('tree abracadabra seesaw elk grrrrrr up a '
                    + 'antidisestablishmentarianism hounddogs').split()
      test_words += ['aardvarks are ant eaters', 'immediately', 'abba']
      for w in test_words:
          wnew, c = best_shuffle(w)
          print("%29s, %-29s ,(%i)" % (w, wnew, c))
  