← Home
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	buf := make([]byte, 1024*1024)
	scanner.Buffer(buf, 1024*1024)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}
	n, _ := strconv.Atoi(scanner.Text())
	
	if !scanner.Scan() {
		return
	}
	
	if !scanner.Scan() {
		return
	}
	s := scanner.Text()

	pos := make([][]int, 26)
	for i := 0; i < len(s); i++ {
		idx := s[i] - 'a'
		pos[idx] = append(pos[idx], i+1)
	}

	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	for i := 0; i < n; i++ {
		if !scanner.Scan() {
			break
		}
		c := scanner.Text()
		cLen := len(c)
		var F int64 = 0

		for j := 0; j < cLen; j++ {
			idx := c[j] - 'a'
			if len(pos[idx]) == 0 {
				F += int64(cLen)
			} else {
				target := j + 1
				p := pos[idx]
				l, r := 0, len(p)-1
				best := -1
				
				for l <= r {
					mid := (l + r) / 2
					if p[mid] >= target {
						best = mid
						r = mid - 1
					} else {
						l = mid + 1
					}
				}
				
				minDist := int64(1 << 60)
				if best != -1 {
					minDist = int64(p[best] - target)
				}
				if best > 0 {
					dist := int64(target - p[best-1])
					if dist < minDist {
						minDist = dist
					}
				}
				if best == -1 {
					minDist = int64(target - p[len(p)-1])
				}
				
				F += minDist
			}
		}
		fmt.Fprintln(out, F)
	}
}