private List<List<String>> find(Set<String> dict, List<List<String>> frontLists){
		List<List<String>> ansLists = new ArrayList<List<String>>();
		for(List<String> frontList : frontLists){
			String frontStr = frontList.get(frontList.size()-1);
			if(checkValid(frontStr, endStr)){
				List<String> tempList = new ArrayList<String>(frontList);
				tempList.add(endStr);
				ansLists.add(tempList);
			}
		}
		if(ansLists.size() > 0)
			return ansLists;
		
		List<String> removeList = new ArrayList<String>();
		for(List<String> subList : frontLists){
			String nowStr = subList.get(subList.size()-1);
			for(int i = 0;i<strLen;i++){
				char[] temp = nowStr.toCharArray();
				for(char c = 'a' ; c <= 'z' ; c++){
					temp[i] = c;
					String tempStr = new String(temp);
					if(dict.contains(tempStr)){
						List<String> tempList = new ArrayList<String>(subList);
						tempList.add(tempStr);
						ansLists.add(tempList);
						removeList.add(tempStr);
					}
				}
			}
		}
		for(String s : removeList){
			dict.remove(s);
		}
		if(ansLists.size() == 0)
			return ansLists;
		return find(dict,ansLists);
	}