function LevensHtein(str_1, str_2)
{
if(str_1 === str_2) return 0;
var len_1 = 1 + str_1.length, i = len_1,
len_2 = 1 + str_2.length, j = len_2,
dists = function (dim_1, dim_2)
{
var i = 0,
retTable = new Array(dim_1);
for(; dim_1--;)
{
retTable[dim_1] = new Array(dim_2);
for(i = dim_2; i--;) retTable[dim_1][i] = 0;
}
return retTable;
}(len_1, len_2);
for(; i--;) dists[i][0] = i;
for(; j--;) dists[0][j] = j;
for(i = 0; ++i < len_1;)
{
for(j = 0; ++j < len_2;)
{
dists[i][j] = Math.min(
1 + dists[i - 1][j ],
1 + dists[i ][j - 1],
dists[i - 1][j - 1] + (str_1[i - 1] === str_2[j - 1] ? 0 : 1));
}
}
return dists[len_1 - 1][len_2 - 1];
}
/* minimum: function LevensHtein(s,t){if(s==t)return 0;var l=1+s.length,i=l,m=1+t.length,j=m,d=function(d,e){var i=0,r=new Array(d);for(;d--;){r[d]=new Array(e);for(i=e;i--;)r[d][i]=0}return r}(l,m);for(;i--;)d[i][0]=i;for(;j--;)d[0][j]=j;for(i=0;++i<l;){for(j=0;++j<m;){d[i][j]=Math.min(1+d[i-1][j],1+d[i][j-1],d[i-1][j-1]+(s[i-1]==t[j-1]?0:1))}}return d[l-1][m-1]} */