# [Python 3], 135 bytes

<!-- language-all: lang-python -->

    def g(s,l):n=len(s);u=[i for i in l if s not in{*l}-{i}and i[:n]==s];return len(u)<2and~(len(u[0])-n)%2or 1-min(g(i[:n+1],l)for i in u)

[Try it online!][TIO-j6nsatnk]

[Python 3]: https://docs.python.org/3/
[TIO-j6nsatnk]: https://tio.run/##bY3NasNADITvfgqxENht4lKnNyf7JGYPDtl1Baps9ucQQvLqrtyWFhJfJObTaGa65I@R3@f57AMMOu3ItGzJs07mUGyHEMYICMhAgAES8JhFXV/oVl/x1vMZsGvZWZvcIfpcojjlvZjjXo53/S26N2dqNpu9hDX1J7Ie9PK2bZw0/lUUMxNYUEpV/ek05sr3g4/LJP8zFxRDoWVF5KES72uaCDMh@6RN17SumuSUpUKpHZAx/7p/BBK6guiZxRUUVtivb/4C "Python 3 – Try It Online"

A `1` indicates the current player will win, whereas a `0` indicates they will lose.