Олимпиадный тренинг

Задача . C. Пластилиновая зебра


Что может быть лучше похода в зоопарк после напряженной рабочей недели? Такого же мнения придерживается и Гриша, который провел все выходные в компании милых полосатых зебр. Вернувшись домой, он загорелся идеей слепить себе зебру из внезапно обнаруженного на чердаке пластилина.

В его распоряжении находятся несколько кусочков пластилина белого и черного цветов, выложенные в ряд. В качестве материала для зебры необходимо выбрать некоторый непрерывный подотрезок кусочков такой, чтобы соседние полоски имели разные цвета. Назовем длиной зебры количество кусочков пластилина в выбранном подотрезке.

Прежде чем приступать к самой лепке, Гриша может несколько раз (\(0\) или более) изменить порядок кусочков следующим образом: произвольно разрезать последовательность полосок на две части, развернуть каждую из частей и затем склеить их вновь. К примеру, если у Гриши были полоски в порядке «bwbbw» (здесь «b» означает черную полоску, а «w» — белую), то можно было бы разрезать последовательность как bw|bbw (черта обозначает место разреза), перевернуть и получить «wbwbb» после склеивания.

Помогите Грише найти максимально возможную длину зебры.

Входные данные

В единственной строке находится строка \(s\) (\(1 \le |s| \le 10^5\), где \(|s|\) обозначает длину строки \(s\)), состоящая из строчных латинских букв «b» и «w», которые обозначают черный и белый кусочки пластилина соответственно.

Выходные данные

Выведите единственное число — максимально возможную длину зебры.

Примечание

В первом примере одна из возможных цепочек превращений выглядит как bwwwbww|bw \(\to\) w|wbwwwbwb \(\to\) wbwbwwwbw, что дает ответ, равный \(5\).

Во втором примере переупорядочивание полосок не улучшает ответ.


Примеры
Входные данныеВыходные данные
1 bwwwbwwbw
5
2 bwwbwwb
3

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя