def generate_anagrams(word):
    # Initialisiere eine Liste zur Speicherung der Anagramme
    anagrams = []

    # Rekursive Hilfsfunktion zur Generierung der Anagramme
    def permute(current, remaining):
        if len(remaining) == 0:
            anagrams.append(current)
        else:
            for i in range(len(remaining)):
                # Wähle den i-ten Buchstaben und permutiere den Rest
                next_current = current + remaining[i]
                next_remaining = remaining[:i] + remaining[i+1:]
                permute(next_current, next_remaining)
    
    # Starte die Rekursion mit dem leeren String und dem gesamten Wort
    permute("", word)
    
    return anagrams

# Hauptprogramm
def main():
    word = input("Gib ein Wort ein (nur Großbuchstaben, ohne Leerzeichen): ").upper()

    anagrams = generate_anagrams(word)
    
    # Duplikate entfernen und sortieren (optional, um die Ausgabe zu verbessern)
    unique_anagrams = sorted(set(anagrams))
    
    print(f'Anagramme von "{word}": {", ".join(unique_anagrams)}')
    print(f'Anzahl der Anagramme: {len(unique_anagrams)}')

if __name__ == "__main__":
    main()
