def binary_strings(n):
    output, path = [], []
    def visit():
        if len(path) == n:
            output.append(''.join(path))
            return
        for bit in '01':
            path.append(bit)
            visit()
            path.pop()
    visit()
    return output
