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` `}
}