Problem:
Score : 400 points

Problem Statement

We have a string s consisting of lowercase English letters.
Snuke can perform the following operation repeatedly:

Insert a letter x to any position in s of his choice, including the beginning and end of s.

Snuke's objective is to turn s into a palindrome.
Determine whether the objective is achievable. If it is achievable, find the minimum number of operations required.

Notes

A palindrome is a string that reads the same forward and backward.
For example, a, aa, abba and abcba are palindromes, while ab, abab and abcda are not.

Constraints

1 \leq |s| \leq 10^5

s consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

s

Output

If the objective is achievable, print the number of operations required.
If it is not, print -1 instead.

Sample Input 1

xabxa

Sample Output 1

2

One solution is as follows (newly inserted x are shown in bold):

xabxa → xaxbxa → xaxbxax

Sample Input 2

ab

Sample Output 2

-1

No sequence of operations can turn s into a palindrome.

Sample Input 3

a

Sample Output 3

0

s is a palindrome already at the beginning.

Sample Input 4

oxxx

Sample Output 4

3

One solution is as follows:

oxxx → xoxxx → xxoxxx → xxxoxxx

Solution in Fortran (GNU Fortran 9.2.1) (judge verdict: Wrong Answer)

program sample
    implicit none
    character(100000)::s,t
    character::top,las
    integer(8) :: i,j,m,n,a,b,c0,c1
    integer(8),allocatable :: x(:),y(:)
  
    read(*,*) s
    n=len_trim(s)
    if(n==1)then
        write(*,*)0
    end if
    a=1
    b=n
    c0=0
    c1=0
    m=0

    do i=1,n
        do 
        if(s(a:a) .eq. 'x' .and. a<n)then
            a=a+1
            c0=c0+1
        elseif(a==n)then
            write(*,*)0
            stop
        else
            top=s(a:a)
            exit
        end if
        end do
        do
        if(s(b:b) .eq. 'x')then
            b=b-1
            c1=c1+1
        else
            las=s(b:b)
            exit
        end if
        end do
        if(top .ne. las)then
            write(*,*)-1
            stop
        else
            m=m+abs(c0-c1)
            a=a+1
            b=b-1
            c0=0
            c1=0
        end if
        if(a>=b)then
            exit
        endif
    end do

    write(*,*) m
  
    stop
end program sample