#include using namespace std; #define ff first #define ss second #define all(data) data.begin(),data.end() #define deb cout << "code_witcher" << endl; #define parr(data) {for(auto da: data) cout << da << " "; cout << endl;} #define pmap(data) {for(auto da: data) cout << da.ff << " " << da.ss << endl; } #define pmat(data) {for(auto dat: data) {for(auto da: dat) cout << da << " " ; cout << endl;} } #define input freopen("i.in", "r", stdin); #define output freopen("o.out", "w", stdout); #define mset(mem, val) memset(mem, val, sizeof(mem)); #define forr(i,s,e) for(int i=(s); i<(e); i++) #define forre(i,s,e) for(int i = (s); i>=(e); i--) #define sd(x) scanf("%d",&x); #define slld(x) scanf("%lld",&x); #define sf(x) scanf("%Lf",&x); #define sc(x) scanf(" %c",&x); #define pd(x) printf("%d\n",x); #define pd_(x) printf("%d ",x); #define plld(x) printf("%lld\n",x); #define plld_(x) printf("%lld ",x); #define nl printf("\n"); typedef unsigned long long int llu; typedef long long int ll; typedef long double ld; typedef pair pii; typedef pair pll; typedef vector vi; typedef vector vvi; typedef vector vl; typedef vector vvl; typedef vector vd; typedef vector vvd; typedef vector vpi; typedef vector vpl; typedef vector vvpi; typedef vector vvpl; typedef vector vb; typedef vector vvb; typedef vector vc; typedef vector > vvc; typedef vector vd; typedef complex base; int inf = 1000000005; ll llinf = 2000000000000000005LL; ll mod = 1000000007; ll mod9 = 1000000009; double PI = 3.1415926535897; double eps = 1e-15; int dx[] = { 1, -1, 0, 0, 1, -1, 1, -1 }, dy[] = { 0, 0, 1, -1, 1, 1, -1, -1 }; vb isprime; vi primes; void seive(int n, bool wantlist = true){ isprime.resize(n + 1, true); isprime[0] = isprime[1] = false; int sq = sqrt(n + 1); forr(i, 2, sq + 1){ if (isprime[i]){ for (int j = i*i; j <= n; j += i) isprime[j] = false; } } for (int i = 2; wantlist && i <= n; i++){ if (isprime[i]) primes.push_back(i); } } template inline T gcd(T a, T b){ while (b != 0){ a %= b; swap(a, b); } return a; } template inline T lcm(T a, T b){ return a*b / gcd(a, b); } template inline bool is_square(T a){ return sqrt(a) == floor(sqrt(a)); } template inline vector operator+(vector& a, vector& b) { assert(a.size() == b.size()); int n = a.size(); vector c(n); for (int i = 0; i < n; i++) c[i] = a[i] + b[i]; return c; } int fastMax(int x, int y) { return (((y - x) >> (32 - 1))&(x^y)) ^ y; } inline ll bexp(ll x, ll n, ll m = mod){ ll res = 1; x %= m; while (n){ if (n & 1) res = res * x % m; x = x * x % m; n >>= 1; } return res; } inline bool ispalin(string& str){ int n = str.length(); for (int i = 0; i < n / 2; i++) if (str[i] != str[n - i - 1]) return false; return true; } //****************************************************************************************** int main(){ //input; int n, d = 1, u = 1, l = 1, sp = 1; sd(n); string s; cin >> s; string special = "!@#$%^&*()-+"; for(char c : s){ if(isupper(c)) u = 0; else if(islower(c)) l = 0; else if(find(all(special), c) != special.end()) sp = 0; else if(isdigit(c)) d = 0; } int ans = d + u + l + sp; ans += max(0, 6 - n - ans); cout << ans << endl; }