Generate Parentheses

working on a problem, that I think involves backtracking balanced_parens(2) => ["()()","(())"] going off of some youtube tuts didn’t seem to help so I’m trying here.

  def backtrack(n), do: aux(n, 0, 0, "", [])

  defp aux(n, open, close,s, stack ) when open == n or close == n, do: [s| stack] 
  defp aux(n, open, close,s, stack ) when close < open do
        aux(n, open, close + 1, s <> ")", stack)
  end
  defp aux(n, open, close,s, stack) when open < n do
        aux(n, open + 1, close, s <> "(", stack )
  end

This is most likely an exercise to introduce Pushdown automaton - Wikipedia