import java.util.*;
class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.minimumNumbers(58,9));
}
int ans = -1;
public int minimumNumbers(int num, int k) {
if( num == 0){
return 0;
}
List<Integer> list = calculate(num,k);
int[] arr = new int[list.size()];
int[] dp = new int[num+1];
Arrays.fill(dp,Integer.MAX_VALUE);
for (int i = 0; i < list.size() ; i++) {
arr[i] = list.get(i);
dp[arr[i]] = 1;
}
for(int i=1;i<=num;i++){
for(int j=0;j<arr.length;j++){
if(dp[i] < Integer.MAX_VALUE && i+arr[j] <= num) {
dp[i+arr[j]] = Math.min(dp[i+arr[j]],dp[i]+1);
}
}
}
return dp[num]== Integer.MAX_VALUE?-1:dp[num];
}
public List<Integer> calculate(int num, int k){
List<Integer> list = new ArrayList<>();
if( k <= num){
list.add(k);
}
int base = 1;
for(int i=1;i<=3;i++){
int nextbase =base*10;
for(int x=base;x<=nextbase-1;x++){
int tmp = x*10+k;
if( tmp <= num){
list.add(tmp);
}
}
base = nextbase;
}
return list;
}
}