← Home
package main

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

var (
	reader = bufio.NewReader(os.Stdin)
	writer = bufio.NewWriter(os.Stdout)
)

func find(parent []int, i int) int {
	if parent[i] == i {
		return i
	}
	parent[i] = find(parent, parent[i])
	return parent[i]
}

func main() {
	defer writer.Flush()
	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}
	for i := 0; i < t; i++ {
		var n int
		fmt.Fscan(reader, &n)
		var a, b string
		fmt.Fscan(reader, &a, &b)

		parent := make([]int, 20)
		for j := 0; j < 20; j++ {
			parent[j] = j
		}

		possible := true
		ans := 0
		for j := 0; j < n; j++ {
			if a[j] > b[j] {
				possible = false
				break
			} else if a[j] < b[j] {
				u := int(a[j] - 'a')
				v := int(b[j] - 'a')
				rootU := find(parent, u)
				rootV := find(parent, v)
				if rootU != rootV {
					parent[rootU] = rootV
					ans++
				}
			}
		}

		if !possible {
			fmt.Fprintln(writer, "-1")
		} else {
			fmt.Fprintln(writer, ans)
		}
	}
}