#include<bits/stdc++.h>
#define rep(i,n) for(int i=1;i<=n;++i)
#define res(i,n) for(int i=0;i<=n;++i)
#define sol(x,y,z) res(wp,tl[k])e[x][wp|w|y]|=p[z][f[i]][wp]
#define ss(x,y) if(k==num[x])sol(0,typ[x],y);else if(k>num[x])sol(x,0,y)
using namespace std;
const int hd[6]={0,0,1,2,4,8};
const int tl[6]={0,0,1,3,15,511};
const int num[18]={0,1,2,3,3,4,4,4,4,5,5,5,5,5,5,5,5,5};
const int typ[18]={0,0,1,1,2,1,2,4,8,1,2,4,8,16,32,64,128,256};
int f[105],ct[512],n,k,ans;
bool l[105],p[9][105][512],e[9][512];
int main(){
	freopen("four.in","r",stdin);
	freopen("four.out","w",stdout);
	res(i,511)for(int j=i;j;j-=j&-j)++ct[i];
	for(;;){
		scanf("%d%d",&n,&k);
		if(n==0&&k==0)break;
		rep(i,n)l[i]=0;
		rep(i,n-1)scanf("%d",f+i+1),l[f[i+1]]=1;
		rep(i,n)res(j,hd[k])res(w,tl[k])p[j][i][w]=0;
		rep(i,n)p[1][i][0]=1;
		for(int i=n;i>1;--i){
			if(!l[i])p[0][i][0]=1;
			res(j,hd[k])res(w,tl[k])e[j][w]=0;
			res(w,tl[k]){
				if(p[0][i][w])res(pj,hd[k])ss(pj,pj);
				if(p[1][i][w]){ss(2,1);ss(4,2);ss(6,3);ss(7,4);ss(10,5);ss(13,8);ss(16,7);ss(17,6);}
				if(p[2][i][w]){ss(3,1);ss(6,2);ss(15,3);ss(17,4);}
				if(p[3][i][w]){ss(5,1);ss(10,2);}
				if(p[4][i][w]){ss(8,1);ss(13,2);}
				if(p[5][i][w]){ss(9,1);}
				if(p[6][i][w]){ss(11,1);}
				if(p[7][i][w]){ss(14,1);}
				if(p[8][i][w]){ss(12,1);}
			}
			res(j,hd[k])res(w,tl[k])p[j][f[i]][w]=e[j][w];
		}
		ans=0x3f3f3f3f;
		res(w,tl[k])if(p[0][1][w])ans=min(ans,ct[w]);
		printf("%d\n",ans==0x3f3f3f3f?-1:ans);
	}
	//system("pause");
	return 0;
}