Build the smallest number Given a non-empty list of digits 0 though 9, output the smallest number that can be produced by an expression formed by reordering these digits and introducing exponentiation signs ^, with adjacent digits getting concatenated as multi-digit numbers. Exponentiation is evaluated as right-associative.

For example, [4, 2, 3, 3] could become 2^34^3 which evaluates as 2^(34^3), but simply writing 2334 is smallest here. You can assume that any array containing a 0 gives a minimum of zero (a special case), or that it's achievable by an expression like 0^rest, or like 00 for just zeroes.

The input list can be taken as any ordered sequence, but not as an unordered (multi)set.

Test cases:

[2,3] =&gt; 8 (2^3)
[3,3] =&gt; 27 (3^3)
[4,3] =&gt; 34 (34)
[1,2,3] =&gt; 1 (1^2^3)
[2,2,2] =&gt; 16 (2^2^2)
[2,3,2] =&gt; 81 (2^3^2) 
[3,0] =&gt; 0 (Special, or maybe 0^3)
[0,1,0] =&gt; 0 (Special, or maybe 0^10)


Shortest code in each language wins. I'll accept an answer just to give the +15 rep without any specific accepting standard.
05AB1E, 12 11 bytes
œε.œJ€.«m}ß

Try it online or verify all test cases or try it online with added debug-lines.
Explanation:

œ            # Get all permutations of the (implicit) input-list
 ε           # Map each permutation to:
  .œ         #  Get all its partitions
    J        #  Join each inner-most list together
     €       #  For each inner list:
      .«     #   Right-reduce it by:
        m    #    Taking the power
         }ß  # After the map: pop and push the flattened minimum
             # (after which it is output implicitly as result)