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

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

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

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

раз (

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

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

, такие что

и

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

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