#include<bits/stdc++.h>
using namespace std;
const int N=50,M=1e5+5;
int n,l,a[N],num[N][N],dp[N][M];
int main(){
string s;
cin>>s>>n;
l=s.size();
for(int i=0;i<=l;i++){
for(int j=0;j<=n;j++) dp[i][j]=INT_MAX;
}
dp[0][0]=-1;
for(int i=0;i<l;i++) a[i+1]=s[i]-'0';
for(int i=1;i<=l;i++){
int x=0;
for(int j=i;j>=max(0,i-5);j--){
x=x+a[j]*pow(10,i-j);
num[j][i]=x;
}
}
for(int i=1;i<=l;i++){
for(int k=0;k<=n;k++){
for(int j=i-1;j>=0&&num[j+1][i]<=n;j--){
if(dp[j][k]!=INT_MAX&&k+num[j+1][i]<=n){
dp[i][k+num[j+1][i]]=min(dp[i][k+num[j+1][i]],dp[j][k]+1);
}
}
}
}
if(dp[l][n]==INT_MAX) cout<<"-1";
else cout<<dp[l][n];
return 0;
}
WA on Subtask1 #2#3
求调