회문 부분수열

문자열과 특별한 위치들이 주어질 때, 특별한 위치를 가장 많이 포함하는 회문 부분수열 중 가장 긴 것의 길이를 구한다.

보통7동적 계획법문자열아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

회문은 뒤에서부터 읽어도 원래 문자열과 같은 문자열이다. 예를 들어 BANANAB는 회문이지만, BANANAS는 회문이 아니다.

부분수열은 원래 문자열에서 문자를 0개 이상 지워서 얻는 문자열이다. 예를 들어 ANNA는 BANANAS의 부분수열이다.

문자열 SSSS의 서로 다른 위치 몇 개가 주어진다. 이 위치를 특별한 위치라고 한다. SS의 부분수열 중에서 회문이면서 특별한 위치를 가장 많이 포함하는 것을 찾아야 한다. 특별한 위치를 최대 개수만큼 포함하는 회문 부분수열이 여러 개라면, 그중 가장 긴 것의 길이를 구한다.

입력

첫째 줄에 대문자 알파벳으로만 이루어진 문자열 SS가 주어진다. SS의 길이는 1 이상 2000 이하이다.

둘째 줄에 정수 NN (0NS0 \le N \le |S|)이 주어지고, 이어서 특별한 위치를 나타내는 서로 다른 정수 NN개가 공백으로 구분되어 주어진다. 각 정수는 1 이상 S|S| 이하이고, 크기 순으로 주어지지는 않는다. SS의 첫 문자의 위치는 1이다.

출력

조건을 만족하는 회문 부분수열의 길이를 정수 하나로 출력한다.