#include<iostream>
using namespace std;
const int maxn=400000;
int n,out[maxn],in[maxn],tag[maxn],ans=0x3f3f3f3f;
void dfs(int cnt,int fa){
if(tag[cnt]){
if(tag[fa]-tag[cnt]>0)ans=min(ans,tag[fa]-tag[cnt]+1);
return;
}
tag[cnt]=tag[fa]+1;
dfs(out[cnt],cnt);
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>out[i];
in[out[i]]++;
}
for(int i=1;i<=n;i++){
if(tag[i]==0)dfs(i,0);
}
cout<<ans;
return 0;
}
点2WA