← Home
```go
package main

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

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

func main() {
	in := bufio.NewReader(os.Stdin)
	var s string
	var k int
	fmt.Fscan(in, &s)
	fmt.Fscan(in, &k)

	n := len(s)
	m := n + k
	ans := 0

	for half := 1; half <= m/2; half++ {
		L := 2 * half
		for start := 0; start+L <= m; start++ {
			ok := true
			for i := 0; i < half; i++ {
				p1 := start + i
				p2 := start + i + half

				var c1, c2 byte
				if p1 < n {
					c1 = s[p1]
				} else {
					c1 = 0
				}
				if p2 < n {
					c2 = s[p2]
				} else {
					c2 = 0
				}

				if c1 != 0 && c2 != 0 {
					if c1 != c2 {
						ok = false
						break
					}
				} else if c1 != 0 && c2 == 0 {
					// assign c2 = c1
				} else if c1 == 0 && c2 != 0 {
					// assign c1 = c2
				} else {
					// both unknown, can be equal
				}
			}
			if ok {
				ans = max(ans, L)
				break
			}
		}
	}

	fmt.Print(ans)
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
```