I have to go, so just a quick prototype, for one-way (only grow) - it just happens to give the result you want for the example, but I know if there was a 2-face separation on the ear loop, you would expect the separated part to disappear, and this doesn't do it:

[![][1]][1]

[![][2]][2]

And this goes the other way:

[![][3]][3]

[![][4]][4]

So if you do the first, then the 2nd, you're probably fine, but there's also a question of how many iterations (I did 100) - you need to implement a "while" loop. It can be done, and I've wrote an example on how to do it here:

[Implement "while" loop in Geometry Nodes](https://blender.stackexchange.com/q/320815/60486)

And here's the screenshots from my answer there:

[![][5]][5]

**Mat Fix:**

[![][6]][6]

**Loop Test:**

[![][7]][7]

**Loop Body:**

[![][8]][8]

You can unmute the node above, so that the selection both grows and shrinks. This will yield such result:

[![][9]][9]

(look at the ear)

[<img src="https://blend-exchange.com/embedImage.png?bid=B5nqnnpq" />](https://blend-exchange.com/b/B5nqnnpq/)

  [1]: https://i.sstatic.net/kkPWUJb8.png
  [2]: https://i.sstatic.net/km6ajOb8.png
  [3]: https://i.sstatic.net/IYseTV6W.png
  [4]: https://i.sstatic.net/JLwn932C.png
  [5]: https://i.sstatic.net/plHnTFfg.png
  [6]: https://i.sstatic.net/eEtSkXvI.png
  [7]: https://i.sstatic.net/DdRNkeD4.png
  [8]: https://i.sstatic.net/MCsmTCpB.png
  [9]: https://i.sstatic.net/JfniBat2.png