package main

func maximumGain(s string, x int, y int) int {
	reverseString := func(s string) string {
		runes := []rune(s)
		for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
			runes[i], runes[j] = runes[j], runes[i]
		}
		return string(runes)
	}

	// swap for bigger score
	if x < y {
		x, y = y, x
		s = reverseString(s)
	}

	aCount, bCount, points := 0, 0, 0
	for _, c := range s {
		if c == 'a' {
			aCount++
		} else if c == 'b' {
			if aCount > 0 {
				aCount--
				points += x
			} else {
				bCount++
			}
		} else {
			points += y * min(bCount, aCount)
			aCount = 0
			bCount = 0
		}
	}

	points += y * min(bCount, aCount)

	return points
}