← Home
```go
package main

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

var parent [26]int

func find(x int) int {
	if parent[x] != x {
		parent[x] = find(parent[x])
	}
	return parent[x]
}

func union(x, y int) bool {
	px, py := find(x), find(y)
	if px == py {
		return false
	}
	parent[px] = py
	return true
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n int
	fmt.Fscan(reader, &n)

	var s, t string
	fmt.Fscan(reader, &s)
	fmt.Fscan(reader, &t)

	for i := 0; i < 26; i++ {
		parent[i] = i
	}

	var spells [][2]int
	for i := 0; i < n; i++ {
		a := int(s[i] - 'a')
		b := int(t[i] - 'a')
		if a != b {
			if union(a, b) {
				spells = append(spells, [2]int{a, b})
			}
		}
	}

	fmt.Fprintln(writer, len(spells))
	for _, spell := range spells {
		fmt.Fprintf(writer, "%c %c\n", 'a'+spell[0], 'a'+spell[1])
	}
}
```