permutação comStrings

ola amigos do guj, sou novo aqui e iniciante em java, gostaria de uma ajuda pra resolver um exercicio da faculdade, o exercicio propõe o seguinte:

1 - com as letrinhas “abcd”, gerar um anagrama. ou seja, todas as permutacoes possível entre as letrinhas informadas;

2 - com as permutacoes, extrair uma relação “somente das combinações” possível com as letrinhas. ex: ab ac ad ae
assim, eu consigo visualizar os padroes de comportamentos gerados no anagrama de forma sintética e enxuta;

3 - E por ultimo, mostrar a quantidade de “ocorrencias” que estas combinacoes (item2) geraram. assim, espero ter algo do tipo:
letrinhas combinadas ocorrencias no angrama ab 12 ac 15 etc…

eu ja fiz um metodo pra permutação:

public class Permuta {

	

	public String doPermuta(String palavra, int posicaoAtual, int posicaoUltima) {

		

		if (posicaoUltima < 0)

			return null;

		

		if (posicaoAtual > palavra.length()-1)

			return doPermuta(palavra, 0, --posicaoUltima);

		

		char letraAtual = palavra.charAt(posicaoAtual);

		

		StringBuilder sb = new StringBuilder(palavra);

		sb.setCharAt(posicaoUltima, letraAtual);

		System.out.println(sb.toString());

		return doPermuta(palavra, ++posicaoAtual, posicaoUltima);

	}

	

	

	public static void main(String[] args) {

		

		String palavra = "ABCD";

		

		Permuta p = new Permuta();

		p.doPermuta(palavra, 0, palavra.length()-1);

	}

}

me ajudem por favor???
obrigado

sera q algeum pode me ajudar??? =[