import sys S = set() # cubes for l in sys.stdin.read().splitlines(): (x,y,z) = list(map(int,l.split(','))) # makes type of tuple explicite for codon S.add((x,y,z)) A = 23 L = set() # water for x in range(-2,A+1): for y in range(-2,A+1): L.add((x,y,-2)) more = True while more: more = False for x in range(-2,A+1): for y in range(-2,A+1): for z in range(-2,A+1): if (x,y,z) not in S and (x,y,z) not in L: # water can only expand in air for (i,j,k) in [(0,0,1),(0,0,-1),(0,1,0),(0,-1,0),(1,0,0),(-1,0,0)]: if (x+i,y+j,z+k) in L: # if neighbour is water L.add((x,y,z)) # water expand more = True break N = 0 for (x,y,z) in S: for (i,j,k) in [(0,0,1),(0,0,-1),(0,1,0),(0,-1,0),(1,0,0),(-1,0,0)]: if (x+i,y+j,z+k) in L: N += 1 print(N) # ~/.local/programs/codon/bin/codon build --relocation-model=static --release -o part2 part2.py