static List<String> recursive(String str, int i){
		char c = str.charAt(i);
		List<String> permList ;
		if( i == 0){
			permList = new ArrayList<String>();
			permList.add(""+c);
			return permList;
		}else {
			permList = recursive(str, i -1);
			List<String> newList = new ArrayList<String>();
			for(String item : permList){
				int len = item.length();
				for(int j = 0 ; j <= len; ++j){
					String pre = j > 0 ? item.substring(0, j) : "";
					String suf = j < len ? item.substring(j, len ) : "";
					newList.add( pre + c + suf );
				}
			}
			return newList;
		}
	}