#include<bits/stdc++.h>
using namespace std;
int n;
int edge[200010];
int flag[200010];
int cnt[200010];
int ans=200010;
void dfs(int x,int tot){
if(flag[edge[x]]==1){
ans=min(ans,tot);
return;
}
flag[x]=1;
dfs(edge[x],tot+1);
flag[x]=0;
return;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
edge[i]=x;
cnt[x]=1;
}
for(int i=1;i<=n;i++){
if(cnt[i]){
dfs(i,1);
}
}
printf("%d",ans);
return 0;
}