For problem statement at 0-999/0-99/90-99/95/problemD.txt this is a correct solution, but verifier at 0-999/0-99/90-99/95/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const MOD = 1000000007
var dp [1005][1005][2]int
var K int
func initDP(maxLen int) {
for d := 1; d <= K+1; d++ {
dp[0][d][0] = 1
dp[0][d][1] = 1
}
for rem := 1; rem <= maxLen; rem++ {
for dist := 1; dist <= K+1; dist++ {
for started := 0; started < 2; started++ {
sum := 0
isStarted := started == 1
for digit := 0; digit <= 9; digit++ {
var nDist int
var nStarted bool
valid := true
isLucky := (digit == 4 || digit == 7)
if !isStarted {
if digit == 0 {
nStarted = false
nDist = K + 1
} else {
nStarted = true
if isLucky {
nDist = 1
} else {
nDist = K + 1
}
}
} else {
nStarted = true
if isLucky {
if dist <= K {
valid = false
}
nDist = 1
} else {
nDist = dist + 1
if nDist > K+1 {
nDist = K + 1
}
}
}
if valid {
stIdx := 0
if nStarted {
stIdx = 1
}
sum = (sum + dp[rem-1][nDist][stIdx]) % MOD
}
}
dp[rem][dist][started] = sum
}
}
}
}
func countBad(s string) int {
n := len(s)
dist := K + 1
started := false
ans := 0
for i := 0; i < n; i++ {
limit := int(s[i] - '0')
rem := n - 1 - i
for digit := 0; digit < limit; digit++ {
var nDist int
var nStarted bool
valid := true
isLucky := (digit == 4 || digit == 7)
if !started {
if digit == 0 {
nStarted = false
nDist = K + 1
} else {
nStarted = true
if isLucky {
nDist = 1
} else {
nDist = K + 1
}
}
} else {
nStarted = true
if isLucky {
if dist <= K {
valid = false
}
nDist = 1
} else {
nDist = dist + 1
if nDist > K+1 {
nDist = K + 1
}
}
}
if valid {
stIdx := 0
if nStarted {
stIdx = 1
}
ans = (ans + dp[rem][nDist][stIdx]) % MOD
}
}
isLucky := (limit == 4 || limit == 7)
if !started {
if limit == 0 {
started = false
dist = K + 1
} else {
started = true
if isLucky {
dist = 1
} else {
dist = K + 1
}
}
} else {
if isLucky {
if dist <= K {
return ans
}
dist = 1
} else {
dist++
if dist > K+1 {
dist = K + 1
}
}
}
}
ans = (ans + 1) % MOD
return ans
}
func solveString(s string) int {
val := 0
for i := 0; i < len(s); i++ {
val = (val*10 + int(s[i]-'0')) % MOD
}
bad := countBad(s)
badInRange := (bad - 1 + MOD) % MOD
res := (val - badInRange + MOD) % MOD
return res
}
func decString(s string) string {
b := []byte(s)
n := len(b)
for i := n - 1; i >= 0; i-- {
if b[i] > '0' {
b[i]--
if b[0] == '0' && n > 1 {
return string(b[1:])
}
return string(b)
}
b[i] = '9'
}
return "0"
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
fmt.Fscan(reader, &t, &K)
initDP(1002)
for i := 0; i < t; i++ {
var l, r string
fmt.Fscan(reader, &l, &r)
ansR := solveString(r)
lMinus1 := decString(l)
ansL := solveString(lMinus1)
ans := (ansR - ansL + MOD) % MOD
fmt.Fprintln(writer, ans)
}
}
```