Eco síncrono#13118

Eco síncrono

3 segundos
256 megabytes

Se dan dos cadenas y formadas por letras minúsculas del alfabeto inglés.

Para una cadena no vacía , sean p_1<p_2<\ldots<p_k todas las posiciones iniciales de sus ocurrencias en , y sean q_1<q_2<\ldots<q_m todas las posiciones iniciales de sus ocurrencias en . Las posiciones se numeran a partir de .

Decimos que es síncrona si k=m\ge 3 y existe un entero tal que

q_i=p_i+d\quad\text{para todo }1\le i\le k.

En otras palabras, al desplazar todas las ocurrencias de en una de las cadenas la misma cantidad, estas coinciden con todas sus ocurrencias en la otra cadena. El desplazamiento puede ser positivo, negativo o cero, y puede ser distinto para distintas cadenas .

Halle la cantidad de cadenas síncronas no vacías distintas. Dos cadenas son distintas si tienen longitudes diferentes o difieren en al menos un carácter. Las ocurrencias pueden solaparse.

Entrada

La primera línea contiene y la segunda línea contiene (1\le |s|,|t|\le 2\cdot 10^5). Ambas cadenas contienen únicamente letras minúsculas del alfabeto inglés.

Salida

Imprima un entero — la cantidad de cadenas síncronas no vacías distintas.

Ejemplos

Ejemplo 1

Loading
Loading

Ejemplo 2

Loading
Loading

Ejemplo 3

Loading
Loading

Nota

En el primer ejemplo, las seis cadenas adecuadas son a, b, c, ab, bc y abc. En particular, abc aparece en en las posiciones y en en las posiciones , por lo que su desplazamiento es d=1.

En el segundo ejemplo, a aparece tres veces en cada cadena, pero sus posiciones iniciales son y . Ningún desplazamiento único hace que estos conjuntos coincidan. Ninguna otra cadena aparece al menos tres veces en ambas cadenas.

En el tercer ejemplo, las cadenas adecuadas son a, aa y aaa.

Puntuación

  1. Subtarea ( puntos): |s|,|t|\le 12.

  2. Subtarea ( puntos): |s|,|t|\le 100.

  3. Subtarea ( puntos): |s|,|t|\le 2000.

  4. Subtarea ( puntos): s=t.

  5. Subtarea ( puntos): \min(|s|,|t|)\le 200.

  6. Subtarea ( puntos): sin restricciones adicionales.