JSFiddle - React, Tailwind, and code Playground

HTML

<textarea id = "input"></textarea><br>
<textarea id = "output"></textarea><br>
<button onclick = "window.func()">Run</button>

CSS

textarea{
  width: 90%;
  height: 150px;
}

JavaScript

var ge = document.getElementById.bind(document);
var input = ge('input');
var output = ge('output');
var f;

window.func = () => {
  func();
  output.value = f(input.value);
};

function func(){
  f=(a,n=(a=a.split` `).length)=>{for(d=n>>1;w=-2,d--;){for(i=n;i--;)for(j=n;j--;)s=((a,f,v=0)=>{for(u=s=a!=f;(r=a[v])&&(t=f[v++]);s+=(p=a=>a.toLowerCase())(r)==p(t));return u*s-1})(a[i],a[j]),!(f[i]|f[j])&&s>=w&&(w=s,x=i,y=j);f[x]=f[y]=1,[a[x],a[y]]=[a[y],a[x]];}return a.join` `}
}