I have a task where I want to return the count and list of words (from the bag of words) that can be made from the bag of letters as a tuple. Imagine that the letters and words are physical pieces and you need to match the letters to the words to complete the words. You're not allowed to use the same physical letter twice, and you're not allowed to use the same physical word twice unless they exist repeatedly in their respective bags. I get how to go about getting the list of possible words, but I'm not sure how to optimize it to select the possible words other than a brute force effort of generating all possible combinations of words.
Here's an example. Imagine you have a bag of letters (similar to Scrabble):
[ g t o g l v o r d e a b ]
and a bag of possible words:
[word bag got we love]
In this case, the answer should be (3, ['bag', 'got', 'love'])
I've found some similar "Find list of possible words" or recursive sum questions that could probably be adapted, but none where they find the possible concurrent set of words from a set of letters in Python.
Here is an example I found for C#:
Finding the set of words that can be spelled with a given set of letters
Here is an example for finding any list of words:
Python: find possible words that can be made from 7 random letters