재미있는 언어
시간 제한1초메모리 제한128 MB
주어진 m개의 단어와 겹치지 않는 n개의 새 단어를 골라, 각 단어의 글자 부분집합으로 만들어질 수 있는 경우의 합을 최대화하는 값을 구하는 문제입니다.
문제
단어를 이용한 잘 알려진 게임이 있습니다. 어떤 단어가 주어지면, 그 단어에 들어 있는 글자만으로 다른 단어들을 만들 수 있습니다. 이때 각 글자는 원래 단어에 등장하는 횟수만큼만 사용할 수 있으며, 글자의 순서는 상관없습니다. 예를 들어 단어 CONTEST로부터 NOTE, NET, ON, TEST, SET 등을 만들 수 있습니다.
당신은 새로운 사전을 편찬하고 있으며, 그 사전에 정확히 개의 새로운 단어를 추가할 수 있습니다. 앞으로 이 게임을 하게 될 개의 단어 을 미리 알고 있습니다. 어떤 와도 같지 않은, 서로 다른 비어 있지 않은 단어 개로 이루어진 집합 를 골라서 다음 값을 최대로 만드세요.
여기서 는 의 글자들로 만들 수 있는, 에 속한 단어들의 집합입니다.
최댓값을 달성하는 집합 는 여러 가지가 있을 수 있고(또한 단어의 글자 순서는 자유롭게 바꿀 수 있으므로), 단어 자체가 아니라 이 합의 최적값, 즉 만들 수 있는 단어의 최대 총 개수만 출력하세요.
입력
첫째 줄에 두 정수 과 이 주어집니다 (, ). 은 추가할 수 있는 새 단어의 개수, 은 게임에 사용할 단어의 개수입니다. 다음 개의 줄에는 각각 하나의 단어 가 주어지며, 각 단어는 A부터 Z까지의 대문자로 이루어져 있고 길이는 최대 입니다.
출력
의 최댓값을 정수 하나로 출력하세요.