```
def kEmptySlots(self, flowers, k):
blooming = []
for day, flower in enumerate(flowers, 1):
i = bisect.bisect(blooming, flower)
for neighbor in blooming[i-(i>0):i+1]:
if abs(flower - neighbor) - 1 == k:
return day
blooming.insert(i, flower)
return -1
```

Keep track of the already blooming flowers with a sorted list. When adding a flower, check how far away its already blooming neighbors are.