[Codeforces 864B]Polycarp and Letters

时间:2022-12-25 23:54:52

Description

Polycarp loves lowercase letters and dislikes uppercase ones. Once he got a string s consisting only of lowercase and uppercase Latin letters.

Let A be a set of positions in the string. Let's call it pretty if following conditions are met:

  • letters on positions from A in the string are all distinct and lowercase;
  • there are no uppercase letters in the string which are situated between positions from A (i.e. there is no such j that s[j] is an uppercase letter, and a1 < j < a2 for some a1 and a2 from A).

Write a program that will determine the maximum number of elements in a pretty set of positions.

Input

The first line contains a single integer n (1 ≤ n ≤ 200) — length of string s.

The second line contains a string s consisting of lowercase and uppercase Latin letters.

Output

Print maximum number of elements in pretty set of positions for string s.

Sample Input

11aaaaBaabAbA

Sample Output

2

HINT

In the first example the desired positions might be 6 and 8 or 7 and 8. Positions 6 and 7 contain letters 'a', position 8 contains letter 'b'. The pair of positions 1 and 8 is not suitable because there is an uppercase letter 'B' between these position.

题解

在一个字符串中找一段,使其中没有大写字母,并且小写字母种数最多。

考虑$n<=200$,直接暴力枚举。

I think there is no need to tell you how to solve this problem...

 //It is made by Awson on 2017.9.29
 #include <set>
 #include <map>
 #include <cmath>
 #include <ctime>
 #include <queue>
 #include <stack>
 #include <vector>
 #include <cstdio>
 #include <string>
 #include <cstring>
 #include <cstdlib>
 #include <iostream>
 #include <algorithm>
 #define LL long long
 #define Max(a, b) ((a) > (b) ? (a) : (b))
 #define Min(a, b) ((a) < (b) ? (a) : (b))
 #define sqr(x) ((x)*(x))
 #define lowbit(x) ((x)&(-(x)))
 using namespace std;
 void read(int &x) {
     ;
     ); ch = getchar());
     ; isdigit(ch); x = (x<<)+(x<<)+ch-, ch = getchar());
     x *= -*flag;
 }

 int n, ans;
 ];
 ];

 void work() {
     read(n);
     ; i <= n; i++)
         cin>>ch[i];
     ; i <= n; i++)
         for (int j = i; j <= n; j++) {
             memset(judge, , sizeof(judge));
             ;
             for (int k = i; k <= j; k++)
                 if (ch[k] >= 'A' && ch[k] <= 'Z') {
                     flag = ;
                     break;
                 }
                 ;
             if (flag) continue;
             ;
             ; k < ; k++)
                 cnt += judge[k];
             ans = Max(ans, cnt);
         }
     printf("%d\n", ans);
 }
 int main() {
     work();
     ;
 }