#include<bits/stdc++.h>
using namespace std;
struct P{
int u,add;
}in,out;
int is[1005];
vector<int> pri;
int main(){
int t,n,m,i,j,C=0;
for(i=2;i<=1000;i++){
if(is[i]==0){
for(j=i+i;j<=1000;j+=i){
is[j]=1;
}
pri.push_back(i);
}
}
while(scanf("%d%d",&n,&m)!=EOF && n&&m){
queue<P> que;
que.push((P){n,0});
int vi[1005]={0},flag=0;
vi[n]=1;
while(que.size()){
out=que.front();
que.pop();
if(out.u==m){
flag=1;
break;
}
for(i=0;i<pri.size() && pri[i]<out.u;i++){
in.add=out.add+1;
if(out.u%pri[i]) continue;
in.u=out.u+pri[i];
if(vi[in.u] || in.u>m) continue;
vi[in.u]=1;
que.push(in);
}
}
printf("Case %d: %d\n",++C,flag?out.add:-1);
}
}