Ensamblaje recursivo de un palíndromo a partir de subcadenas

Rust Hard functions

Tarea «Ensamblaje recursivo de un palíndromo a partir de subcadenas»

Dada una cadena S que consiste en letras latinas minúsculas. Es necesario dividir recursivamente (usando una función) la cadena original en el número mínimo de subcadenas palindrómicas (cada subcadena debe ser un palíndromo) y mostrarlas separadas por espacios. Si la división es imposible (por ejemplo, la cadena está vacía), mostrar "NO". Restricciones: longitud de S de 1 a 1000 caracteres. Se garantiza que la respuesta existe.

Formato de entrada

Una sola cadena S (1 ≤ |S| ≤ 1000).

Formato de salida

Una cadena que contiene las subcadenas palindrómicas separadas por espacios. Si la cadena de entrada está vacía, mostrar "NO".

Ejemplos

Ejemplo 1

ENTRADA
racecar
SALIDA
racecar

Ejemplo 2

ENTRADA
aab
SALIDA
aa b
main.rs