# [Jelly], <s>50</s> 40 [bytes]

    ®“œṣ⁾“F”jЀFvµÐL
    “()“{}“[]“<>”©ẋ"FŒ!QÇÐḟ

Plain and inefficient.

**[Try it online!]** (times out at TIO for [1,1,1,1] - yes, inefficient.)

### How?

    ®“œṣ⁾“F”jЀFvµÐL - Link 1: recursive reduction: string s
                 µÐL - loop until no change:
    ®                - recal from register: ["()", "{}", "[]", "<>"]
     “œṣ⁾“F”         - literal ["œṣ⁾", "F"]
             Ѐ      - map:
            j        -   join: [["œṣ⁾","()","F"],["œṣ⁾","{}","F"],["œṣ⁾","[]","F"],["œṣ⁾","<>","F"]]
               F     - flatten: "œṣ⁾()Fœṣ⁾{}Fœṣ⁾[]Fœṣ⁾<>F"
                v    - evaluate as Jelly code with input s
                     -   œṣ     - split on sublists     }
                     -     ⁾..  - literal char-pair     } for each of the four possible
                     -        F - flatten               }
    
    “()“{}“[]“<>”©ẋ"FŒ!QÇÐḟ - Main link: list: [n(), n{}, n[], n<>]
    “()“{}“[]“<>”           - literal ["()", "{}", "[]", "<>"]
                 ©          - copy to register
                   "        - zip with:
                  ẋ         -   repeat list
                    F       - flatten
                     Œ!     - all permutations (yeah, it's inefficient!)
                       Q    - de-duplicate
                         Ðḟ - filter discard if:
                        Ç   -   call last link (1) as a monad (non-empty is truthy, while empty is falsey)


[Jelly]: https://github.com/DennisMitchell/jelly
[bytes]: https://github.com/DennisMitchell/jelly/wiki/Code-page
[Try it online!]: https://tio.run/nexus/jelly#@39o3aOGOUcnP9y5@FHjPiDT7VHD3KzDEx41rXErO7T18AQfLqCghiaQqK4FEtGxQMLGDqjo0MqHu7qV3I5OUgw83H54wsMd8/8fbo/8/z/aUMcACI1jAQ