public static void findPartition(String s, int begin, ArrayList<String> pt,
			ArrayList<ArrayList<String>> result) {
		if (begin >= s.length()) {
			ArrayList<String> copy = new ArrayList<String>();
			for (int i = 0; i < pt.size(); i++) {
				copy.add(pt.get(i));
			}
			result.add(copy);
		}

		for (int i = begin; i < s.length(); i++) {
			if (isPalindrome(s, begin, i)) {
				pt.add(s.substring(begin, i + 1));
				findPartition(s, i + 1, pt, result);
				pt.remove(pt.size() - 1);
			}
		}
	}