Прошу совета по комбинаторике.
Задача. Найти число слов длины 

, составленных из букв алфавита 

, причём каждую букву 

 можно использовать не более 

 раз (

).
Например, посчитать слова (цепочки букв) длины 2, которые можно составить из букв слова "МАТЕМАТИКА" (букву К можно использовать только 1 раз, а букву М два раза).
Тривиальный переборный алгоритм:
Перебирать все мультиподмножества заданного мультимножества, имеющие заданную мощность 

, и суммировать число их перестановок ("перестановок с повторениями", ибо мультимножества).
Другими словами, перебирать неотрицательные кортежи 

, такие что 

 и 

, и суммировать величины 

.
Как называется эта задача? Есть ли эффективный способ решения (алгоритм полиномиальной сложности)?