#include<bits/stdc++.h>
using namespace std;
int n,dx[41][41],lenx,ans=0x7fffffff;
string x;
void dfs(int p,int pre,int cnt,int tot)
{
if(tot>n) return;
if(p==lenx)
{
tot+=dx[pre+1][p];
if(tot==n) ans=min(ans,cnt);
return;
}
dfs(p+1,p,cnt+1,tot+dx[pre+1][p]);
if(dx[pre+1][p]<=n) dfs(p+1,pre,cnt,tot);
}
int main()
{
cin>>x;
lenx=x.size();
scanf("%d",&n);
for(int i=1;i<=lenx;i++) for(int j=i;j<=lenx&&dx[i][j-1]<=100000000;j++) dx[i][j]=(dx[i][j-1]<<3)+(dx[i][j-1]<<1)+x[j-1]-'0';
dfs(1,0,0,0);
if(ans==0x7fffffff) printf("-1");
else printf("%d",ans);
}
T点如右:提交