#Carlos Triana

from PIL import Image

def main():
   
    mensaje = raw_input('Ingresa el mensaje: ')
    large = len(mensaje)
    miLista = []
    iterator = 0
    while iterator<large:
	letra = mensaje[iterator]
	binario = bin(ord(letra))[2:]
	j  = 0		
	while j<7:
		number = (binario[j])		
		#binario = int(binario)
		miLista.append(number)
		j = j+1
	iterator = iterator+1
    largeofList = len(miLista)
    print largeofList
    print miLista
     #print type(miLista)
     #print
     #print 'Valores de la lista = ', miLista
     #print type(miLista[1])	

    i = 0
    x = 0
    y = 0
    im = Image.open("ars05.jpg")

    for x in xrange(im.size[0]):
        for y in xrange(im.size[1]):
            pix = im.load()
            tupla = pix[x, y]
	    if i < largeofList:
            	a = tupla[0]
            	b = tupla[1]
            	c = tupla[2]
		#Sacar el valor de a(int) en binario
		aBinario = bin(a)[2:]
		if miLista[i] == aBinario[-1]:
			a = a+0 #Stupid, but it solves an error
			i = i+1
		elif miLista[i] == 0 and aBinario[-1] == 1:
			a = a-1
			i = i+1
		elif miLista[i] == 1 and aBinario[-1] == 0:
			a = a+1
			i = i+1
 
		#Sacar el valor de b(int) en binario
		bBinario = bin(b)[2:]
		if miLista[i] == bBinario[-1]:
			b = b+0
			i = i+1
		elif miLista[i] == 0 and bBinario[-1] == 1:
			b = b-1
			i = i+1
		elif miLista[i] == 1 and bBinario[-1] == 0:
			b = b+1
			i = i+1
		
		#Sacar el valor de c(int) en binario
		cBinario = bin(c)[2:]  
		if miLista[i] == cBinario[-1]:
			c = c+0
			i = i+1
		elif miLista[i] == 0 and cBinario[-1] == 1:
			c = c-1
			i = i+1
		elif miLista[i] == 1 and cBinario[-1] == 0:
			c = c+1
			i = i+1
	    	newTupla = (a,b,c)	
	    	im.putpixel((x, y), newTupla)

	    else:
		tupla = pix[x, y]
		im.putpixel((x, y), tupla)
	    	
	 
             
            #newTupla = (newA,newB,newC)
            #im.putpixel((x, y), newTupla)
	    i = i+1   
    im.save('new05.png')
main()