编程题
### 问题描述
小智是一个年轻的宝可梦训练师,他来到一个由 $n$ 个公寓组成的大楼,这些公寓从左到右排列。每个公寓都可以从街上进入,也可以从里面出去。每个公寓都与左边的公寓和右边的公寓相连。公寓 $1$ 只与公寓 $2$ 相连,公寓 $n$ 只与公寓 $n-1$ 相连。
每个公寓里都有一只不同种类的宝可梦。小智想进入这些公寓抓一些宝可梦。征得居民的同意之后,他可以从街上进入某个公寓,依次进入若干个相邻的公寓,最后从其中一个公寓出去。但是他不能多次进入同一个公寓。
小智非常高兴,他想知道最少需要进入多少个公寓,才能抓到这栋大楼中所有种类的宝可梦。请你帮他计算这个最小值。
### 输入格式
第一行一个整数 $n$,表示大楼中公寓的数量。
第二行包含 $n$ 个字符,每个字符为英文字母(区分大小写),表示对应公寓中的宝可梦种类。
### 输出格式
输出一个整数,表示小智最少需要进入的公寓数量。
### 样例输入
```txt
6
abacbc
```
### 样例输出
```txt
4
```
### 样例说明
小智可以从第 $1$ 个公寓进入,然后依次进入第 $2$、$3$、$4$ 个公寓,最后从第 $4$ 个公寓出去。在这个过程中,他可以抓到所有种类的宝可梦,所以最少只需要进入 $4$ 个公寓。
### 评测数据规模
对于 $100$% 的评测数据,$1 \le n \le 10^5$。