public static ArrayList<ArrayList<String>> createListFromSameLetterString(
			String s, ArrayList<ArrayList<String>> allLists, int length) {
		if (length == 0) {
			return new ArrayList<ArrayList<String>>();
		}
		String letter = s.substring(0, 1);
		allLists = createListFromSameLetterString(s, allLists, length - 1);
		ArrayList<ArrayList<String>> newlists = new ArrayList<ArrayList<String>>();
		int i = 0;
		// copy list
		// for(ArrayList<String> list: allLists){
		// newlists.add((ArrayList<String>)list.clone());
		// for(String element : list){
		//
		// }
		// }
		if (allLists.size() == 0) {
			ArrayList<String> newList = new ArrayList<String>();
			newList.add(letter);
			allLists.add(newList);
			return allLists;
		}
		i = 0;
		// if orianl is bb link bb,b
		while (i < allLists.size()) {
			ArrayList<String> list = allLists.get(i);
			ArrayList<String> newList = new ArrayList<String>();
			for (String element : list)
				newList.add(element);
			newList.add(letter);
			newlists.add(newList);
			i++;
		}
		i = 0;
		// if orianl is bb link bbb
		while (i < allLists.size()) {
			ArrayList<String> list = allLists.get(i);
			ArrayList<String> newList = new ArrayList<String>();
			for (int j = 0; j < list.size() - 1; j++) {
				// String element = list.get(j);
				newList.add(list.get(j));
			}
			if (list.size() > 0) {
				newList.add(list.get(list.size() - 1) + letter);
			}
			newlists.add(newList);
			i++;
		}

		return newlists;
	}