""" lib/wordle.py """

import itertools
import string

from lib.logger import logset
from lib.words import Words

log = logset(__name__)


class Wordle(Words):
    # Existing class definition
    def __init__(self):
        Words.__init__(self)

    def find_5_letter_words(self, input_string):
        """Generate 5-letter words containing characters from the input string"""

        if len(input_string) > 5:
            raise ValueError("Input string must be 5 characters or less")

        # Fill string with spaces to make it 5 letters
        input_filled = input_string.ljust(5)
        valid_words = set()

        # Generate all combinations by replacing spaces with letters from the alphabet
        positions = [pos for pos, char in enumerate(input_filled) if char == " "]
        for letters in itertools.product(string.ascii_lowercase, repeat=len(positions)):
            # Create a new combination replacing spaces
            combination = list(input_filled)
            for pos, letter in zip(positions, letters):
                combination[pos] = letter
            combined_string = "".join(combination)

            # Use existing method to check if the combination can make a 5-letter word
            permutation_results = self.find_permutations(combined_string)
            for word, _ in permutation_results:
                if len(word) == 5:
                    valid_words.add(word)

        sorted_words = self.sort_words_by_frequency(list(valid_words))

        return sorted_words


# Example usage (integrate within the main function if necessary)
if __name__ == "__main__":
    words_instance = Wordle(min_limit=5, max_limit=5)  # Set limits to 5
    input_str = "pia"  # Example input
    results = words_instance.find_5_letter_words(input_str)
    print(results)
