#include <bits/stdc++.h>
using namespace std;
long long EPS = 1000000007;
const int INF = 1000000000;
double PI = 3.14159265358979323846;
const int MAXN = 1000040;
long long abss(long long h) { return max(h, -h); }
double fabss(double h) { return max(h, -h); }
long long ceill(long long x, long long y) {
  if (x % y != 0) return (x / y) + 1;
  return x / y;
}
string itos(long long num) {
  string str = "";
  if (num == 0) return "0";
  while (num != 0) {
    str += ((num % 10) + '0');
    num /= 10;
  }
  reverse(str.begin(), str.end());
  return str;
}
long long sstoi(string num) {
  long long count = 1;
  for (int i = 0; i < (int)num.size() - 1; i++) {
    count *= 10;
  }
  long long ans = 0;
  for (int i = 0; i < (int)num.size(); i++) {
    ans += (num[i] - '0') * count;
    count /= 10;
  }
  return ans;
}
long long n, m, k, h;
char a[MAXN];
int b[MAXN];
int c[MAXN];
map<char, int> ma;
int main() {
  int n;
  cin >> n;
  int counter = 0;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    if (ma[a[i]] == 0) {
      counter++;
    }
    ma[a[i]] = 1;
  }
  ma.clear();
  int index = 0;
  int count = 0;
  int answer = n;
  for (int i = 0; i < n; i++) {
    while (index != n && count != counter) {
      if (ma[a[index]] == 0) {
        count++;
      }
      ma[a[index]]++;
      index++;
    }
    if (count == counter) {
      answer = min(answer, index - i);
    }
    ma[a[i]]--;
    if (ma[a[i]] == 0) {
      count--;
    }
  }
  cout << answer;
}
