#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define mod 1000000007 #define mod9 1000000009 #define inf 1000000011 #define infll 2000000000000000005LL double pi = 22 / 7; #define here cout< 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 ispalin(T &arr){ int n = arr.size(); for (int i = 0; i < n / 2; i++){ if (arr[i] != arr[n - i - 1]) return false; } return true; } struct point{ int x, y; point(){} point(int x, int y){ this->x = x; this->y = y; } }; struct pair_hash { template size_t operator () (const pair &p) const { auto h1 = hash{}(p.first); auto h2 = hash{}(p.second); return h1 ^ 23909 ^ h2 ; } }; template vector prime_factors(T num){ vector factors; while(!(num % 2)){ num /= 2; factors.push_back(2); } for(T i = 3; i <= sqrt(num); i += 2){ while(!(num % i)){ num /= i; factors.push_back(i); } } if(num > 2) factors.push_back(num); return factors; } template T powb(T base, T p, T modval = mod) { T res = 1; while(p) { if(p & 1) res = (res * base) % modval; base = (base * base) % modval; p /= 2; } return res % modval; } class fastprime{ int size = 0; vector SPF; public: vector prime; // SPF -> Smallest Prime Factor vector isprime; fastprime(int size){ this->size = size; isprime.resize(size, 1); SPF.resize(size); sieve(); } void sieve(){ isprime[0] = isprime[1] = 0; for(int i=2;i> N; string str; cin >> str; string numbers = "0123456789"; string lower_case = "abcdefghijklmnopqrstuvwxyz"; string upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string special_characters = "!@#$%^&*()-+"; unordered_set num, low, up, spl; for(char ch : numbers) num.insert(ch); for(char ch : lower_case) low.insert(ch); for(char ch : upper_case) up.insert(ch); for(char ch : special_characters) spl.insert(ch); int l = 0, u = 0, s = 0, n = 0; for(char ch : str) { if(num.find(ch) != num.end()) n++; else if(low.find(ch) != low.end()) l++; else if(up.find(ch) != up.end()) u++; else s++; } int rem = 0; if(!l) rem++; if(!u) rem++; if(!s) rem++; if(!n) rem++; cout << max(6 - N, rem); }