#include <iostream>
#include <iomanip>
#include <string>

// returns '1' for true, '0' for false.
char exclusive_or(char a, char b)
{
    return (a != b) + '0' ;
}

std::string to_gray(const std::string& binary)
{
    std::string result(1, binary[0]);
    result.reserve(binary.size() + 1);

    for (unsigned i = 1; i < binary.size(); ++i)
        result += exclusive_or(binary[i - 1], binary[i]);

    return result;
}

int main()
{
    std::string number;
    
    std::cout << std::right ;
    
    std::cout << " bin = gray\n" ;
    while ( std::getline(std::cin, number) && !number.empty() )
    {
    	std::cout << std::setw(4) << number ;
    	std::cout << " = " ;
    	std::cout << std::setw(4) << to_gray(number) << '\n' ;
    }
}