```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
if _, err := fmt.Fscan(in, &t); err != nil {
return
}
for i := 0; i < t; i++ {
var s, c string
fmt.Fscan(in, &s, &c)
b := []byte(s)
n := len(b)
minIndices := make([]int, n)
if n > 0 {
minIdx := n - 1
for j := n - 1; j >= 0; j-- {
if b[j] < b[minIdx] {
minIdx = j
}
minIndices[j] = minIdx
}
}
for j := 0; j < n-1; j++ {
target := minIndices[j+1]
if b[target] < b[j] {
b[j], b[target] = b[target], b[j]
break
}
}
res := string(b)
if res < c {
fmt.Fprintln(out, res)
} else {
fmt.Fprintln(out, "---")
}
}
}
```