Remplazo infinito.
Dadas una cadena de caracteres consistente solo de letras latinas minúsculas 'a', y una cadena de caracteres .
En un movimiento, puedes remplazar cualquier letra 'a' de la cadena con la cadena completa. Note que luego de remplazar la cadena , esta puede contener otras letras diferentes de 'a'.
Puedes realizar cualquier cantidad arbitraria de movimientos (incluso cero). ¿Cuántas cadenas diferentes se pueden obtener?
Dos cadenas son consideradas diferentes si tienen diferente tamaño, o difieren en algún índice.
Entrada
La primera línea de entrada contiene un solo entero - el número de casos de prueba.
La primera línea de cada caso de prueba contiene una cadena no vacía.
La segunda línea contiene una cadena no vacía.
Salida
Por cada caso de prueba, imprima el número de cadenas diferentes que pueden ser obtenidas luego de aplicar una cantidad arbitraria de movimientos (incluso cero).
Si el número es infinitamente largo, imprima -1. De otra forma imprímalo módulo .
Restricciones
En todos los casos de prueba se cumple que y .
Ejemplo de Entrada
3
aaaa
a
aa
abc
a
b
Ejemplo de Salida
1
-1
2
Explicación de los ejemplos
Caso de prueba 1:
Puedes remplazar cualquier letra 'a' con la cadena "a", pero eso no cambiará la cadena. Así que no importa cuantos movimientos se realicen, no se puede obtener más cadenas que la inicial.
Caso de prueba 2:
Puedes remplazar la segunda letra 'a' con la cadena "abc". La cadena se convertirá en la cadena "aabc". Entonces, de puede volver a remplazar la segunda letra 'a', convirtiendo a la cadena en "aabcbc". Este procedimiento se puede aplicar infinitas veces.
Caso de prueba 3:
Puedes o dejar la cadena como está -realizando cero movimientos-, o remplazar la única letra de con . La cadena se convierte en "b", así que no se pueden realizar más movimientos en ella.
Comments