악당 로봇
시간 제한1초메모리 제한128 MB
주어진 패턴 문자열들의 부분 문자열 출현 횟수 합이 최대가 되도록 {A,B,C}로 이루어진 길이 K의 문자열을 정한다.
문제
슈퍼히어로 박승원은 지구를 침략한 악당 로봇들을 해킹하는 데 성공했다. 각 로봇은 개의 취약점을 가지고 있으며(), 번째 취약점은 문자 'A', 'B', 'C'로만 이루어진 길이 15 이하의 문자열 로 표현된다. 박승원은 'A', 'B', 'C' 버튼을 눌러 로봇을 공격하는데, 지금까지 누른 버튼들의 어떤 연속된 구간이 취약점 와 정확히 일치할 때마다 그 취약점에 대한 공격이 한 번 성공한다.
예를 들어 취약점이 "ABA", "CB", "ABACB"라고 하자. 박승원이 "ABACB"를 누르면 1~3번째 문자가 "ABA", 4~5번째 문자가 "CB", 전체가 "ABACB"와 일치하므로 서로 다른 세 번의 공격이 성공한다. 이처럼 한 번에 여러 취약점을 동시에 공격할 수 있고, 같은 취약점을 여러 번 사용할 수도 있다. 즉, 성공한 공격의 횟수는 최종적으로 누른 문자열의 부분 문자열이 어떤 취약점과 일치하는 경우를 (위치와 취약점 쌍마다) 모두 센 값이다.
박승원에게는 시간이 부족해서 버튼을 정확히 번만 누를 수 있다(). 박승원이 성공시킬 수 있는 공격의 최대 횟수를 구하여라.
입력
첫째 줄에 두 정수 과 가 공백으로 구분되어 주어진다. 이어지는 개의 줄에 각 취약점 문자열 가 한 줄에 하나씩 주어진다.
출력
박승원이 성공시킬 수 있는 공격의 최대 횟수를 한 줄에 출력한다.
힌트
, 이고 취약점이 "ABA", "CB", "ABACB"일 때, "ABACBCB"를 누르면 "ABA"와 한 번, "ABACB"와 한 번, "CB"와 두 번 일치하여 총 4번의 공격이 성공한다.