s = input()





def isCorrect(s):
    if len(s) == 0:
        return True

    prev = s[0]
    for c in s[1:]:
        if (prev == c):
            return False
        prev = c
        
    return True

n_moves = 0
while True:
    if isCorrect(s):
        break
    
    rev= s[::-1]

    ## choose which to remove
    prevChar = rev[0]

    leaveIndex = -1

    for i, c in enumerate(rev[1:]):
        if (prevChar == c):
            leaveIndex = i
            break
        prevChar = c


    ## choose which to flip
    rev = rev[leaveIndex + 1:]
    #print("rev after leaving", rev)

    prevChar = rev[0]


    flipIndex = -1
    for i, c in enumerate(rev[1:]):
        if (prevChar == c):
            flipIndex = i + 1
            break
        prevChar = c

    if flipIndex == -1:
        flipIndex = len(rev) 

    #print("flipIndex", flipIndex)

    not_affected = rev[::-1][0 : len(rev) - flipIndex]
    flipped = rev[:flipIndex]
    removed = s[len(s)-leaveIndex - 1:]

    #print("not affected:", not_affected)
    #print("flipped:", flipped)
    #print("removed", removed)

    s = not_affected + flipped + removed

    n_moves += 1

#print(s)
print(n_moves)

"""
rev after leaving +--+
flipIndex 2
not affected: -+
flipped: +-
removed +-
rev after leaving -+
flipIndex 2
not affected: 
flipped: -+
removed +-
rev after leaving -+
flipIndex 2
not affected: 
flipped: -+
removed 
-+

3


"""