For problem statement at 0-999/400-499/400-409/401/problemD.txt this is a correct solution, but verifier at 0-999/400-499/400-409/401/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"fmt"
"sort"
)
func main() {
var n int64
var m int
fmt.Scan(&n, &m)
// Convert n to digits
s := fmt.Sprintf("%d", n)
digits := make([]int, len(s))
for i, c := range s {
digits[i] = int(c - '0')
}
sort.Ints(digits)
k := len(digits)
// dp[mask][remainder] = number of ways
// mask is bitmask of used digits
total := 1 << k
dp := make([][]int64, total)
for i := range dp {
dp[i] = make([]int64, m)
}
// We'll track (mask, remainder)
// Start: no digit placed, remainder 0
// For each state, try adding a new digit
// Initial state: empty number (mask=0, rem=0, no leading zero issue yet)
// We'll handle leading zeros separately
// dp[mask][rem] = count of numbers using digits in mask with remainder rem
// Start with dp[0][0] = 1 (empty)
dp[0][0] = 1
for mask := 0; mask < total; mask++ {
for rem := 0; rem < m; rem++ {
if dp[mask][rem] == 0 {
continue
}
// Count bits set in mask
bitsSet := 0
for i := 0; i < k; i++ {
if mask&(1<<i) != 0 {
bitsSet++
}
}
// Try adding each unused digit
// To avoid counting duplicates, track which digit values we've used at this position
usedDigit := make(map[int]bool)
for i := 0; i < k; i++ {
if mask&(1<<i) != 0 {
continue
}
d := digits[i]
if usedDigit[d] {
continue
}
// Check leading zero: if no digits placed yet (bitsSet == 0) and d == 0, skip
if bitsSet == 0 && d == 0 {
usedDigit[d] = true
continue
}
usedDigit[d] = true
newMask := mask | (1 << i)
newRem := (rem*10 + d) % m
dp[newMask][newRem] += dp[mask][rem]
}
}
}
fullMask := total - 1
fmt.Println(dp[fullMask][0])
}
```