← Home
```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)
}
```