How can you prove that any DFA accepting the language generated by the regular expression $ \{0|1\}^*0\{0|1\}^n$ requires at least $ 2^{n+1}$ states?

I first attempted induction on $ n$ . But I don’t even see how to prove the base-case, like if $ n=1$ . You need the DFA to take any string and, when it encounters a 0, get set down a track of checking that $ n$ characters follow. If it’s fewer than $ n$ then fine you reject. But if there are more characters, to sort of re-set it so that it looks for the first 0 after the earlier one was found. But DFAs don’t have that kind of memory.

And once you’ve established the base-case, the inductive case doesn’t seem clear either. If you know the result is true up to $ n$ , then if you consider the regex with $ n+1$ then you get a DFA which accepts it. You intuitively want to remove the accepting states and "move them back" one vertex in the graph. Now you have a DFA with at least $ 2^n$ states. But how do you know that you needed $ 2^n$ accepting states so that the net number of accepting states is then $ 2^{n+1}$ ?