To the question: Write down a BNF to describe all strings that do not contain aaa as a substring, one could use either
There are many other possible answers, but those above are the simplest.