Everybody loves palindromes, but Artur doesn't.
He has a string S that consists of lowercase English letters ('a' - 'z'). Artur wants to find a substring T of S of the maximal length, so that T isn't a palindrome.
He has a string S that consists of lowercase English letters ('a' - 'z'). Artur wants to find a substring T of S of the maximal length, so that T isn't a palindrome.
Input
The input contains a single line, containing string S. String S consists of lower case English letters.
Output
In a single line print the length of T
Constraints
1 ≤ |S| ≤ 100000
1 ≤ |S| ≤ 100000
Sample Input:
aba
Sample Output:
2
Explanation:
"aba" is a palindrome, but "ab" isn't.
C Implementation:
#include <stdio.h>
#define MAX 1000000
int length(char *s)
{
 int len = 0;
 while(*s)
  len++,s++;
 return len;
}
int ispalin(char *s)
{
 int l = 0;
 int r = length(s)-1;
 int flag = 1;
 while(l<r)
 {
  if(s[l]!=s[r])
  {
   flag = 0;
   break;
  }
  l++;
  r--;
 }
 return flag;
}
int main()
{
    char *s;
    int i,len,maxlen,l;
    s=(char*)malloc(sizeof(char)*MAX);
    scanf("%s",s);
    len = length(s);
    maxlen = 0;
    for(i=0;s[i];i++)
    {
     if(!(ispalin(s+i)))
     {
      l = len - i;
      maxlen = l>maxlen?l:maxlen;
     }
    }
    printf("%d",maxlen);
    return 0;
}