private static boolean levenshteinDelOK(String a, String b, int aOffset, int bOffset, int max, int delA, int delB)
	{
		if (aOffset < 0) return (bOffset - delB <= max - delA);
		if (bOffset < 0) return (aOffset - delA <= max - delB);
		if (a.charAt(aOffset) == b.charAt(bOffset))
			return levenshteinDelOK(a, b, aOffset - 1, bOffset - 1, max, delA, delB);
		if ((max + Math.min(delA, aOffset + 1) + Math.min(delB, bOffset + 1)) <= 0) return false;
		if (levenshteinDelOK(a, b, aOffset - 1, bOffset, max, delA - 1, delB))
			return true;
		if (levenshteinDelOK(a, b, aOffset, bOffset - 1, max, delA, delB - 1))
			return true;
		if (levenshteinDelOK(a, b, aOffset - 1, bOffset - 1, max - 1, delA, delB))
			return true;
		return false;
	}