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)
}