Михаил наносит ответный удар

시간 제한5초메모리 제한4 MB

요약
문자열에 문자를 원하는 위치에 추가해 팰린드롬으로 만들 때 필요한 최소 추가 개수와 그 팰린드롬 하나를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 문자열, 재귀
정답자
아직 제출이 없습니다

문제

Обратите внимание на нестандартное ограничение по памяти в данной задаче.

Вася очень любит участвовать в олимпиадах по информатике. Он уже давно понял, что больше всего ему нравится решать задачи, связанные со строками. Особенное впечатление на него произвела недавно изобретенная структура данных --- дерево палиндромов. Оказалось, что практически любую задачу на строки можно решить с помощью этой поистине всесильной структуры, ведь она умеет находить палиндромы даже там, где их нет и в помине!

Васе никак не удается заставить дерево палиндромов не искать, а создавать палиндромы из строк. А ведь так хочется! При этом, так как Вася очень ценит встречающиеся ему строки, он хочет лишь добавлять в них символы в произвольных местах, но не удалять и не изменять их. Помогите ему найти способ превращать обычные строки в палиндромы!

입력

В первой и единственной строке входных данных содержится непустая строка ss, состоящая из строчных английских букв. Её длина, обозначаемая ∣s∣|s|, не превышает 15,00015\\,000 символов.

출력

В первой строке выведите единственное число aa --- минимальное количество символов, которые необходимо добавить в строку ss, чтобы получился палиндром. Во второй строке выведите строку tt, являющуюся палиндромом и получающуюся из ss добавлением указанного Вами числа символов (иными словами, должно быть верно ∣s∣+a=∣t∣|s| + a = |t|).

힌트

Палиндромом называется строка, одинаково читающаяся в обоих направлениях. Так, например, строки "a", "abraarba" являются палиндромами, а "ab" и "abracadabra" нет.

예제2

  1. 예제 1

    입력
    ab
    
    예상 출력
    1
    bab
    
  2. 예제 2

    입력
    abba
    
    예상 출력
    0
    abba