문자열 나누기

문자열 t를 주어진 N개의 문자열 조각으로 나누는 방법의 수를 1,000,000,007로 나눈 나머지로 구한다.

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

문제

문자열 tt와 서로 다른 문자열 NN개로 이루어진 집합 SS가 주어진다. tt를 여러 조각으로 나누되, 각 조각이 SS의 원소가 되도록 해야 한다.

예를 들어 tt = abab, SS = {a, ab, b}이면 조건을 만족하는 분할 방법은 다음 4가지이다.

  • a, b, a, b
  • a, b, ab
  • ab, a, b
  • ab, ab

tt를 나누는 방법의 수를 구하시오. 답이 매우 커질 수 있으므로 1,000,000,007로 나눈 나머지를 출력한다.

입력

입력은 테스트 케이스 하나로 이루어지며 형식은 다음과 같다.

N
s1
.
.
.
sN
t

첫째 줄에 SS의 원소 개수 NN (1N100,0001 \le N \le 100{,}000)이 주어진다. 다음 NN개 줄에 서로 다른 문자열 NN개가 한 줄에 하나씩 주어진다. ii번째 문자열 sis_iSSii번째 원소이다. sis_i는 알파벳 소문자로만 이루어지며 길이는 1 이상 100,000 이하이다. 모든 sis_i (1iN1 \le i \le N)의 길이의 합은 200,000 이하이다. 마지막 줄에 나눌 문자열 tt가 주어진다. tt는 알파벳 소문자로만 이루어지며 길이는 1 이상 100,000 이하이다.

출력

tt를 나누는 방법의 수를 1,000,000,007로 나눈 나머지를 출력한다.