#include #include int isprime(long long n){ long long i; if(n<1 || (n!=2 && n%2==0)) return 0; if(n==2) return 1; for(i=3;i*i<=n;i++){ if(n%i==0) return 0; } return 1; } int main(void){ int n,i; long long k,ans; int *d,*data; char *flg; int len,next; scanf("%d%lld",&n,&k); data=(int *)calloc(n+1,sizeof(int)); flg=(char *)calloc(n+1,sizeof(char)); for(i=1;i<=n;i++) scanf("%d",&data[i]); ans=0; for(i=1;i<=n;i++){ if(flg[i]) continue; next=i; len=0; while(flg[next]==0){ flg[next]=1; len++; next=data[i]; } ans+=(long long)len-1; } if(k