#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int p[N], d[N], n, ans;
int find(int x)
{
if(p[x] != x)
{
int root = find(p[x]);
d[x] += d[p[x]];
p[x] = root;
}
return p[x];
}
void merge(int a, int b)
{
int pa = find(a);
int pb = find(b);
if(pa != pb)
{
p[pa] = pb;
d[a] = d[b] + 1;
}
else
{
ans = min(ans, d[a] + d[b] + 1);
}
}
bool same(int a, int b)
{
return find(a)==find(b);
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i ++)
{
p[i] = i;
}
ans = 1e9;
for(int i = 1; i <= n; i ++)
{
int t;
cin >> t;
merge(i, t);
}
cout << ans;
return 0;
}