```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, m int
fmt.Fscan(reader, &n, &m)
var s, t string
fmt.Fscan(reader, &s, &t)
minPos := make([]int, m)
maxPos := make([]int, m)
current := 0
for i := 0; i < m; i++ {
for s[current] != t[i] {
current++
}
minPos[i] = current
current++
}
current = n - 1
for i := m - 1; i >= 0; i-- {
for s[current] != t[i] {
current--
}
maxPos[i] = current
current--
}
ans := 0
for i := 0; i < m-1; i++ {
if w := maxPos[i+1] - minPos[i]; w > ans {
ans = w
}
}
fmt.Fprintln(writer, ans)
}
```