private int recursive(String S) {
		if (S.length() == 0) {
			return 0;
		}
		System.err.println(S);
		int min = Integer.MAX_VALUE;
		int pointer = 0;
		for (int i = powList.length - 1; i >= 0; i--) {
			if (S.startsWith(powList[i])) {
				String tmp = S.substring(powList[i].length());
				if (tmp.length() > 0) {
					int a = recursive(tmp);
					if (a != -1 && a < min) {
						min = a +1;
						pointer = i;
					}
				} else {
					min = 1;
					pointer = i;
				}
			}
		}
		if (min==Integer.MAX_VALUE ){
			return -1;
		}

		return min;
	}