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 prob5
    implicit none
    character(len=100005)::S
    integer, allocatable::l(:), r(:)
    integer::m, i, j, tmp, ans
    read(*,*) S
    m = len_trim(S)
    allocate(l(2*(m+1)), r(2*(m+1)))
    tmp = 200000
    l = 0
    r = 0
    j = 1
    do i = 1, m
        if(S(i:i) .eq. "x") then
            tmp = tmp + 1
            if(i == m) then
                l(j) = tmp
            end if
        else
            l(j) = tmp
            l(j+1) = ichar(S(i:i)) - ichar('a')
            tmp = 200000
            j = j+2
        end if
    end do

    tmp = 200000
    j = 1
    do i = 1, m
        if(S(m-i+1:m-i+1) .eq. "x") then
            tmp = tmp + 1
            if(i == m) then
                r(j) = tmp
            end if
        else
            r(j) = tmp
            r(j+1) = ichar(S(m-i+1:m-i+1)) - ichar('a')
            tmp = 200000
            j = j+2
        end if
    end do
    !write(*,*) j

    ans = 0
    do i = 1, j/2
        if(mod(i,2) == 1) then
            ans = ans + max(l(i),l(j-i+1)) - 200000
        else
            if(l(i) /= l(j-i+1)) then
                write(*,*) -1
                stop
            end if
        end if
    end do

    write(*,*) ans
    stop
end program