Problem:
Score : 500 points

Problem Statement

You are given a string S consisting of 0 and 1.
Find the maximum integer K not greater than |S| such that we can turn all the characters of S into 0 by repeating the following operation some number of times.

Choose a contiguous segment [l,r] in S whose length is at least K (that is, r-l+1\geq K must be satisfied). For each integer i such that l\leq i\leq r, do the following: if S_i is 0, replace it with 1; if S_i is 1, replace it with 0.

Constraints

1\leq |S|\leq 10^5

S_i(1\leq i\leq N) is either 0 or 1.

Input

Input is given from Standard Input in the following format:

S

Output

Print the maximum integer K such that we can turn all the characters of S into 0 by repeating the operation some number of times.

Sample Input 1

010

Sample Output 1

2

We can turn all the characters of S into 0 by the following operations:

Perform the operation on the segment S[1,3] with length 3. S is now 101.

Perform the operation on the segment S[1,2] with length 2. S is now 011.

Perform the operation on the segment S[2,3] with length 2. S is now 000.

Sample Input 2

100000000

Sample Output 2

8

Sample Input 3

00001111

Sample Output 3

4

Solution in Pascal (FPC 2.6.2) (judge verdict: Wrong Answer)

uses math ;
var mi,m,i,j,k,sum,now,c,d : longint ;
    cc,yo : array [0..1000001] of int64 ;
    a,b : int64 ;
    so,s1,s2 : ansistring ;
    gg : char ;
begin
  readln(so);
  gg:='2';
  j:=-1;
  for i:=1 to length(so) do
   begin
    if gg<>so[i] then
     begin
      inc(j);
      cc[j]:=now;
      now:=1;
      gg:=so[i];
     end
    else
     inc(now);
   end;
   inc(j);
   cc[j]:=now;
  mi:=1000000000;
  for i:=3 to j do
   begin
    if min(cc[i-2],cc[i])+cc[i-1]<mi then
     mi:=min(cc[i-2],cc[i])+cc[i-1];
   end;
  if j=1 then
   mi:=cc[1]
  else if j=2 then
   mi:=max(cc[1],cc[2]);
  writeln(mi);
end.