조화 연산
시간 제한1초메모리 제한1024 MB
뒤집기와 회전 연산으로 이루어진 목록에서, 구간을 적용했을 때 문자열 S가 그대로 남는 구간의 개수를 셉니다.
문제
이 문제에서는 길이가 인 0-based 문자열 에 적용할 수 있는 세 가지 연산을 다룬다.
: 를 뒤집는다.
: 를 오른쪽으로 칸 회전한다. 여기서 는 를 만족하는 양의 정수다. 즉, 모든 에 대해 의 위치 문자는 의 위치 문자다.
: 와 같지만 오른쪽이 아니라 왼쪽으로 회전한다.
예를 들어 pda에 를 적용하면 adp, 인 을 적용하면 dap, 인 을 적용하면 apd가 된다. 어떤 와 에 대해서도 이다.
연산 리스트를 문자열에 적용하면 리스트 순서대로 차례로 실행된다. 첫 번째 연산을 원래 문자열에 적용하고, 두 번째 연산을 그 결과에 적용하는 식이다.
소문자로 이루어진 문자열 와 개의 연산 가 주어진다. 를 만족하는 인덱스 쌍 중, 부분 리스트 를 에 적용한 최종 결과가 와 같은 쌍의 개수를 구하라.
예를 들어 pda, , , 라고 하자. 만 적용하면 dap이 되어 와 다르다. 를 적용하면 가 되어 다시 pda가 되므로 이 쌍은 센다. 만 적용하면 apd가 되어 와 다르다. 답은 이다.
입력
첫 줄에 소문자로 이루어진 문자열 ()가 주어진다.
둘째 줄에 연산의 개수 ()가 주어진다.
이어지는 개 줄에 리스트 순서대로 연산이 한 줄에 하나씩 주어진다. 연산은 대문자 I만 있는 줄이다. 또는 연산은 대문자 문자 뒤에 정수 ()가 붙는다.
출력
를 에 적용한 결과가 가 되는 쌍 ()의 개수를 한 줄에 출력한다.