Well, if your focus is on the iterator then your approach doesn't look right - at least not to me. The Iterator interface and it's methods are meant to be used within the collection framework it is a part of. An Iterator is used to iterate over a given list or set of already provided elements, not as to have any logic on it's own. Also an Iterator has to fulfill the contract to keep the same order as its underlying collection. When you modify the Iterator or it's next() to become self-aware and work on it's own without respect to its collection you break this contract basically renders your Iterator invalid/useless.
I guess you try to use the wrong tool for the wrong job as you only described you want to keep track of numbers of times a metho got called. This is easy done by adding a simple member to the class and increment it each time (wich will require synchronization) - but from the history you already struggled with that easy task.
I know that some here again will take this as to offensive - but from the history of this topic it seems you're not have much experience of it. I guess the better approach would be to step back a step or two and rethink about the goal you want to achieve: If you want to learn about collections and Iterator you chose the wrong example as this not how Iterator in
java works. If you focus on bruteforce an n-digit phrase an Iterator only makes sense if you have a collection like a Set or a List already populated you want to iterate over. Otherwise your goal and your approach doesn't align and shouldn't be forced as whatever you might think to learn will end up in a wrong conclusion.
TLDR: To help us to help you try to explain the bigger goal overall than just this one problem ...