If we want to have the *reset password* form to look like this:

[![reset][1]][1]

then we could use the following hooks:

    /**
     * Modify the password hint
     */
    add_filter( 'password_hint', function( $hint )
    {
      return __( 'Use upper and lower case letters, numbers, and symbols like ! " ? $ % ^ & ).' );
    } );
    
    /**
     * Modify 'New password' text
     */
    add_action( 'validate_password_reset', function( $errors )
    {
    	add_filter( 'gettext', 'wpse_gettext');	
    	return $message;
    });

    
    /**
     * Modify 'Log in' text
     */
    add_action( 'resetpass_form', function()
    {
    	add_filter( 'gettext', 'wpse_gettext');	
    });
    
The `wpse_gettext` helper function is defined as:
    
    function wpse_gettext( $text )
    {
    	$match = false;

        // Modify gettext if there's a match
    	switch ( $text )
    	{
    		case 'New password' :			
    			$text = 'Use this password, or type a new one over it';
    			$match = true;
    			break;
    		case 'Log in' :
    			$text = 'Already registered before? Click here to log-in';
    			$match = true;			
    		default:
    	}

        // Remove current gettext callback if there's a match
    	if( $match )
    		remove_filter( current_filter(), __FUNCTION__ );
    
    	return $text;
    } 

where we remove the filter as soon as it has been used once. We also try to hook into nearby hooks to minimize the number of `gettext` checks.


  [1]: https://i.sstatic.net/RFpiK.jpg