직교 폐포

시간 제한2초메모리 제한64 MB

문제

길이가 같은 두 이진 문자열 $a$와 $b$(길이 $n$)의 직교 합(orthogonal sum)은 $c_i = a_i \oplus b_i$로 정의되는 문자열 $c$이다. 여기서 $\oplus$는 배타적 논리합(XOR)으로, 두 문자가 같으면 $0$을, 다르면 $1$을 반환한다.

길이가 $n$인 이진 문자열 $S$에 대해, $S(k)$를 $S$의 $k$번째 순환 이동(circular shift)이라 하자. 이는 $S$의 마지막 $k$개 문자를 문자열의 맨 앞으로 옮기는 연산이다. 예를 들어 abcde의 2번째 순환 이동은 deabc이다.

$S$의 직교 폐포(orthogonal closure)는 $S^{\oplus}$로 표기하며, $0 \le k, l \le n - 1$인 모든 문자열 $S(k) \oplus S(l)$들의 집합이다.

길이가 같은 이진 문자열 $T$가 주어졌을 때, $T$가 $S^{\oplus}$에 속하는지 판별하시오.

입력

첫째 줄에 문자열 $T$가, 둘째 줄에 문자열 $S$가 주어진다. 두 문자열의 길이는 서로 같으며 $1$ 이상 $5000$ 이하이고, 각 문자는 0 또는 1이다.

출력

$T$가 $S^{\oplus}$에 속하면 Yes를, 그렇지 않으면 No를 출력한다.