#include #include using namespace std; string numbers = "0123456789"; string lower_case = "abcdefghijklmnopqrstuvwxyz"; string upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string special_characters = "!@#$%^&*()-+"; int minimumNumber(int n, string password) { // Return the minimum number of characters to make the password strong int numdeficit = 6 - password.size(); bool haveNumber = any_of( password.cbegin(), password.cend(), []( char sym ){ return find( numbers.cbegin(), numbers.cend(), sym ) != numbers.cend(); } ); bool haveLower = any_of( password.cbegin(), password.cend(), []( char sym ){ return find( lower_case.cbegin(), lower_case.cend(), sym ) != lower_case.cend(); } ); bool haveUpper = any_of( password.cbegin(), password.cend(), []( char sym ){ return find( upper_case.cbegin(), upper_case.cend(), sym ) != upper_case.cend(); } ); bool haveSpec = any_of( password.cbegin(), password.cend(), []( char sym ){ return find( special_characters.cbegin(), special_characters.cend(), sym ) != special_characters.cend(); } ); auto retval = 0; if ( !haveNumber ) ++retval; if ( !haveLower ) ++retval; if ( !haveUpper ) ++retval; if ( !haveSpec ) ++retval; return max( retval, numdeficit ); } int main() { int n; cin >> n; string password; cin >> password; int answer = minimumNumber(n, password); cout << answer << endl; return 0; }