#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("sse4")
using namespace std;
long long int MOD = 1000000007;
long long int powmod(long long int a, long long int b) {
  long long int res = 1;
  a %= 1000000009;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % 1000000009;
    a = a * a % 1000000009;
  }
  return res;
}
long long int gcd(long long int a, long long int b) {
  return b ? gcd(b, a % b) : a;
}
long long int add(long long int a, long long int b) {
  return ((a % MOD) + (b % MOD)) % MOD;
}
long long int mul(long long int a, long long int b) {
  return ((a % MOD) * (b % MOD)) % MOD;
}
long long int sub(long long int a, long long int b) {
  return ((a % MOD) - (b % MOD) + MOD) % MOD;
}
long long int binpow(long long int x, long long int y) {
  long long int z = 1;
  while (y) {
    if (y & 1) z = mul(z, x);
    x = mul(x, x);
    y >>= 1;
  }
  return z;
}
long long int n;
vector<long long int> a(2001);
map<long long int, long long int> mm;
bool good(long long int m) {
  map<long long int, long long int> mmp = mm;
  long long int lp = 0;
  long long int rp = m;
  bool ok = false;
  for (long long int i = 0; i < rp; i++) {
    mmp[a[i]]--;
  }
  long long int maxn = -1;
  for (auto u : mmp) {
    maxn = max(u.second, maxn);
  }
  if (maxn <= 1) {
    return true;
  }
  while (rp < n) {
    maxn = -1;
    mmp[a[lp]]++;
    mmp[a[rp]]--;
    for (auto u : mmp) {
      maxn = max(u.second, maxn);
    }
    if (maxn <= 1) {
      return true;
    }
    lp++;
    rp++;
  }
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (long long int i = 0; i < n; i++) {
    cin >> a[i];
    mm[a[i]]++;
  }
  long long int l = -1;
  long long int r = n;
  while (r > l + 1) {
    long long int m = (r + l) / 2;
    if (good(m)) {
      r = m;
    } else {
      l = m;
    }
  }
  cout << r << endl;
}
