#ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int64; typedef unsigned long long uint64; #define two(X) (1<<(X)) #define twoL(X) (((int64)(1))<<(X)) #define contain(S,X) (((S)&two(X))!=0) #define containL(S,X) (((S)&twoL(X))!=0) const double pi=acos(-1.0); const double eps=1e-11; template inline void ckmin(T &a,T b){if(b inline void ckmax(T &a,T b){if(b>a) a=b;} template inline T sqr(T x){return x*x;} typedef pair ipair; #define SIZE(A) ((int)A.size()) #define LENGTH(A) ((int)A.length()) #define MP(A,B) make_pair(A,B) #define PB(X) push_back(X) #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define REP(i,a) for(int i=0;i<(a);++i) #define ALL(A) A.begin(),A.end() string numbers = "0123456789"; string lower_case = "abcdefghijklmnopqrstuvwxyz"; string upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string special_characters = "!@#$%^&*()-+"; int main() { #ifdef _MSC_VER freopen("input.txt","r",stdin); #endif std::ios::sync_with_stdio(false); int n; string s; cin>>n>>s; int w0=0,w1=0,w2=0,w3=0; for (char c:s) { if (numbers.find(c)!=string::npos) w0=1; if (lower_case.find(c)!=string::npos) w1=1; if (upper_case.find(c)!=string::npos) w2=1; if (special_characters.find(c)!=string::npos) w3=1; } int ret=max(4-w0-w1-w2-w3,6-n); printf("%d\n",ret); return 0; }