#include <iostream>
#include <iomanip>
#include <bitset>
#include <type_traits>

using namespace std;

template<typename Int>
int pairs(Int n)
{
    static_assert(is_integral<Int>::value && is_unsigned<Int>::value);
    constexpr int bits = sizeof(Int)*8;
    bitset<bits> b(n);
    int p = 0;
    for(int i = 1; i < bits; ++i)
        p += (b[i] == b[i-1]);
    return p;
}

int main(int argc, char * argv[])
{
    cout << pairs((unsigned int )12) << endl;
    cout << pairs((unsigned char)12) << endl;
}
