← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	var n int
	var t int64
	var s string
	fmt.Fscan(in, &n, &t)
	fmt.Fscan(in, &s)

	houses := 0
	lastHouse := 0
	for i, c := range s {
		if c == 'H' {
			houses++
			lastHouse = i + 1
		}
	}

	if int64(lastHouse) > t {
		fmt.Println(-1)
		return
	}

	feasible := func(k int) bool {
		p := 0
		inComp := false
		start := 0
		var sumLen int64
		lastEnd := 0
		lastLen := 0

		for i := 1; i <= n; i++ {
			switch s[i-1] {
			case 'H':
				p++
			case 'S':
				p--
			}
			if p > k {
				if !inComp {
					inComp = true
					start = i
				}
			} else {
				if inComp {
					inComp = false
					end := i
					l := end - start
					sumLen += int64(l)
					lastEnd = end
					lastLen = l
				}
			}
		}

		if inComp {
			return false
		}

		req := lastHouse
		if lastEnd > req {
			req = lastEnd
		}
		time := int64(req) + 2*sumLen
		if lastEnd > lastHouse {
			time -= int64(lastLen)
		}
		return time <= t
	}

	lo, hi := 0, houses
	for lo < hi {
		mid := (lo + hi) / 2
		if feasible(mid) {
			hi = mid
		} else {
			lo = mid + 1
		}
	}
	fmt.Println(lo)
}