your Uncle help Drunk needs
JavaScript - 286 279 bytes

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


You can try it on JSFiddle.