from PIL import Image

img = Image.open("CodeCamembert.png")
# img = Image.open("exemple_codecamembert.png")

dim_camembert = 30

width, height = img.size
x_max = width // dim_camembert
y_max = height // dim_camembert

def fill(image, x, y, base, new):
    global width
    global height
    image.putpixel((x,y), new)
    if x < width-1 and image.getpixel((x+1,y)) == base:
        fill(image, x+1, y, base, new)
    if x > 0 and image.getpixel((x-1,y)) == base:
        fill(image, x-1, y, base, new)
    if y < height-1 and image.getpixel((x,y+1)) == base:
        fill(image, x, y+1, base, new)
    if y > 0 and image.getpixel((x,y-1)) == base:
        fill(image, x, y-1, base, new)

res = ""
for y in range(y_max):
    for x in range(x_max):
        img_tmp = Image.new(img.mode, (dim_camembert, dim_camembert))
        img_tmp.paste(img.crop((x*dim_camembert, y*dim_camembert, x*dim_camembert+dim_camembert, y*dim_camembert+dim_camembert)))
        zones = 0
        for a in range(dim_camembert):
            for b in range(dim_camembert):
                if img_tmp.getpixel((a,b)) == 0:
                    fill(img_tmp, a,b,0,255)
                    zones += 1
        res += str(zones-1)

for i in range(0, len(res), 2):
    c = chr(ord('A') + int(res[i:i+2], 5))
    print(c, end="")