#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
std::vector<int> split( int v )
{
std::vector<int> r;
while( v ) {
r.push_back( v % 10 );
v /= 10;
}
return r;
}
int main()
{
int target = 1234;
int guess = 1783;
auto targetv = split( target );
auto guessv = split( guess );
auto bulls = std::count_if( guessv.begin(), guessv.end(),
[it = targetv.begin()]( int i ) mutable
{ return i == *it++; } );
auto cows = std::count_if( guessv.begin(), guessv.end(),
[s = std::set<int>{ targetv.begin(), targetv.end() }]( int i )
{ return s.count( i ); } );
cows -= bulls;
std::cout << "bulls:" << bulls << " cows:" << cows << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKc3RkOjp2ZWN0b3I8aW50PiBzcGxpdCggaW50IHYgKQp7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IHI7CiAgICB3aGlsZSggdiApIHsKICAgICAgICByLnB1c2hfYmFjayggdiAlIDEwICk7CiAgICAgICAgdiAvPSAxMDsKICAgIH0KICAgIHJldHVybiByOwp9CgppbnQgbWFpbigpCnsKICAgIGludCB0YXJnZXQgPSAxMjM0OwogICAgaW50IGd1ZXNzID0gMTc4MzsKCQogICAgYXV0byB0YXJnZXR2ID0gc3BsaXQoIHRhcmdldCApOwogICAgYXV0byBndWVzc3YgPSBzcGxpdCggZ3Vlc3MgKTsKCiAgICBhdXRvIGJ1bGxzID0gc3RkOjpjb3VudF9pZiggZ3Vlc3N2LmJlZ2luKCksIGd1ZXNzdi5lbmQoKSwKICAgICAgICAgICAgW2l0ID0gdGFyZ2V0di5iZWdpbigpXSggaW50IGkgKSBtdXRhYmxlIAogICAgICAgIHsgcmV0dXJuIGkgPT0gKml0Kys7IH0gICk7CiAgICAgICAgCiAgICBhdXRvIGNvd3MgID0gc3RkOjpjb3VudF9pZiggZ3Vlc3N2LmJlZ2luKCksIGd1ZXNzdi5lbmQoKSwKICAgICAgICAgICAgW3MgPSBzdGQ6OnNldDxpbnQ+eyB0YXJnZXR2LmJlZ2luKCksIHRhcmdldHYuZW5kKCkgfV0oIGludCBpICkgCgkgICAgeyByZXR1cm4gcy5jb3VudCggaSApOyB9ICApOwoKICAgIGNvd3MgLT0gYnVsbHM7CgkKICAgIHN0ZDo6Y291dCA8PCAiYnVsbHM6IiA8PCBidWxscyA8PCAiIGNvd3M6IiA8PCBjb3dzIDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiAwOwp9