아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

대칭 선택의 개수

시간 제한1초메모리 제한128 MB

요약
길이 n인 두 단어 열이 주어질 때, 각 위치에서 두 단어 중 하나를 골라 이어 붙였을 때 회문이 되는 선택의 수를 센다.
난이도

보통10점 중 7점

유형
동적 계획법, 문자열, 투 포인터, 재귀
정답자
아직 제출이 없습니다

문제

두 개의 단어 수열 (x1,…,xn)(x_1, \dots, x_n) 과 (y1,…,yn)(y_1, \dots, y_n) 이 주어진다. 여기서 1≤n≤301 \le n \le 30 이다.

각 인덱스 ii (1≤i≤n1 \le i \le n) 마다 두 단어 xix_i 와 yiy_i 중 정확히 하나를 고른다. 고른 단어들을 인덱스가 커지는 순서대로 이어 붙인다. 따라서 하나의 선택은 길이 nn 인 수열로 나타낼 수 있으며, 그 ii 번째 원소는 11 (xix_i 를 고름) 또는 22 (yiy_i 를 고름) 이다. 가능한 선택은 모두 2n2^n 가지이다. 서로 다른 선택이 같은 단어를 만들 수도 있다.

어떤 선택으로 만들어진 단어가 팰린드롬(왼쪽에서 오른쪽으로 읽으나 오른쪽에서 왼쪽으로 읽으나 같은 단어)이면, 그 선택을 대칭적이라고 부른다.

두 수열이 주어질 때, 2n2^n 가지 선택 중 대칭적인 선택이 몇 개인지 구하라.

입력

첫째 줄에 정수 nn (1≤n≤301 \le n \le 30) 이 주어진다.

이어지는 nn 개의 줄에는 첫 번째 수열의 단어들이 한 줄에 하나씩 순서대로 주어진다. 즉 1+i1+i 번째 줄이 xix_i 이다 (i=1,…,ni = 1, \dots, n). 그다음 nn 개의 줄에는 같은 방식으로 두 번째 수열의 단어들이 주어진다. 즉 1+n+i1+n+i 번째 줄이 yiy_i 이다.

각 단어는 비어 있지 않은 소문자 알파벳(a 부터 z) 문자열이다. 모든 단어 길이의 합은 11 이상 400400 이하이다.

출력

대칭적인 선택의 개수를 나타내는 음이 아닌 정수 하나를 출력한다.

예제3

  1. 예제 1

    입력
    5
    ab
    a
    a
    ab
    a
    a
    baaaa
    a
    a
    ba
    
    예상 출력
    12
    
  2. 예제 2

    입력
    1
    aba
    a
    
    예상 출력
    2
    
  3. 예제 3

    입력
    1
    ab
    ba
    
    예상 출력
    0