← Home
package main

import (
	"bufio"
	"io"
	"os"
)

type FastReader struct {
	data []byte
	idx  int
	n    int
}

func NewFastReader() *FastReader {
	data, _ := io.ReadAll(os.Stdin)
	return &FastReader{data: data, n: len(data)}
}

func (fr *FastReader) nextInt() int {
	for fr.idx < fr.n && fr.data[fr.idx] <= ' ' {
		fr.idx++
	}
	sign := 1
	if fr.idx < fr.n && fr.data[fr.idx] == '-' {
		sign = -1
		fr.idx++
	}
	val := 0
	for fr.idx < fr.n {
		c := fr.data[fr.idx]
		if c < '0' || c > '9' {
			break
		}
		val = val*10 + int(c-'0')
		fr.idx++
	}
	return val * sign
}

func (fr *FastReader) nextString() string {
	for fr.idx < fr.n && fr.data[fr.idx] <= ' ' {
		fr.idx++
	}
	start := fr.idx
	for fr.idx < fr.n && fr.data[fr.idx] > ' ' {
		fr.idx++
	}
	return string(fr.data[start:fr.idx])
}

type DSU struct {
	parent []int
	size   []int
}

func NewDSU(n int) *DSU {
	parent := make([]int, n)
	size := make([]int, n)
	for i := 0; i < n; i++ {
		parent[i] = i
		size[i] = 1
	}
	return &DSU{parent: parent, size: size}
}

func (d *DSU) Find(x int) int {
	root := x
	for d.parent[root] != root {
		root = d.parent[root]
	}
	for x != root {
		p := d.parent[x]
		d.parent[x] = root
		x = p
	}
	return root
}

func (d *DSU) Union(a, b int) {
	ra := d.Find(a)
	rb := d.Find(b)
	if ra == rb {
		return
	}
	if d.size[ra] < d.size[rb] {
		ra, rb = rb, ra
	}
	d.parent[rb] = ra
	d.size[ra] += d.size[rb]
}

func main() {
	in := NewFastReader()
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	T := in.nextInt()
	for ; T > 0; T-- {
		n := in.nextInt()
		k := in.nextInt()
		s := in.nextString()
		t := in.nextString()

		dsu := NewDSU(n)

		if k < n {
			for i := 0; i+k < n; i++ {
				dsu.Union(i, i+k)
			}
		}
		if k+1 < n {
			for i := 0; i+k+1 < n; i++ {
				dsu.Union(i, i+k+1)
			}
		}

		cnt := make([][26]int32, n)
		for i := 0; i < n; i++ {
			r := dsu.Find(i)
			cnt[r][s[i]-'a']++
			cnt[r][t[i]-'a']--
		}

		ok := true
		for i := 0; i < n && ok; i++ {
			if dsu.parent[i] == i {
				for c := 0; c < 26; c++ {
					if cnt[i][c] != 0 {
						ok = false
						break
					}
				}
			}
		}

		if ok {
			out.WriteString("YES\n")
		} else {
			out.WriteString("NO\n")
		}
	}
}