class Resemble extends Comparing{
int difference = 2;
public boolean compare(String dataBaseEntry){
dataBaseEntry=dataBaseEntry.trim();
if(dataBaseEntry.length()-pattern.length()<-1 || dataBaseEntry.length()-pattern.length()>1) return false;
if(!considerCase)dataBaseEntry = dataBaseEntry.toLowerCase();
if(dataBaseEntry.contains(pattern) || pattern.contains(dataBaseEntry)) return true;
return (dropLetters(difference,dataBaseEntry,pattern,false) || dropLetters(difference,pattern,dataBaseEntry,false));
}
private boolean dropLetters(int count,String pattern, String toDrop, boolean switched){
String cut;
char[] oChars = toDrop.toCharArray();
for(int i=0;i<oChars.length;i++){
cut="";
for(int r=0;r<oChars.length;r++){
if(r!=i)cut+=oChars[r];
}
if(pattern.contains(cut)&&pattern.length()-cut.length()<difference)return true;
else{
if(count>1 && oChars.length>2 && dropLetters(count-1,pattern,cut,false))return true;
if(!switched&&count>1&&pattern.length()>1 && dropLetters(count,cut, pattern,true)) return true;
}
}
return false;
}
}