1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def not_possible(word: str) -> bool:
    a = word.count('a')
    b = word.count('b')

    return (a % 2 == 1) and (b % 2 == 1)


def count_moves(word: list[chr]) -> int:
    if len(word) <= 1:
        return 0

    if word[0] == word[-1]:
        return count_moves(word[1:-1])

    first_left = ''.join(word[1:]).find(word[-1]) + 1
    first_right = ''.join(word[::-1][1:]).find(word[0]) + 1

    if first_left != -1 and first_left < first_right:
        word[0], word[first_left] = word[first_left], word[0]
        return first_left + count_moves(word[1:-1])
    else:
        word[-1], word[-1-first_right] = word[-1-first_right], word[-1]
        return first_right + count_moves(word[1:-1])


data = input()

if not_possible(data):
    print(-1)
else:
    print(count_moves(list(data)))