299. Bulls and Cows

class Solution {
public:
    string getHint(string secret, string guess) {
        int n = secret.size();
        int bulls = 0;
        unordered_map<char, int> secret_count, guess_count;
        for (int i = 0; i < n; i++) {
            if (secret[i] == guess[i]) bulls++;
            else {
                secret_count[secret[i]]++;
                guess_count[guess[i]]++;
            }
        }
        int cows = 0;
        for (const auto& [k, v] : guess_count) {
            if (secret_count.count(k)) {
                cows += min(secret_count[k], v);
            }
        }
        return to_string(bulls) + "A" + to_string(cows) + "B";
    }
};