Look mom! I made my own (Base 10) numeral system! We've all done it, well, maybe not, but making your own alien language and numbering system is a staple of especially fantasy writing, but is mostly just a fun activity.

The task is simple, take two inputs:


An ordered list input of 10 [ten] unique 'numerals' (any printable
ASCII character) and interpret them, in order, as the values 0, 1,
2, 3,...,9

+There are exceptions to what can be a numeral here. Arithmetic operators (+, -, *, /), Parentheses, and spaces cannot be used as one of the numerals.
An arithmetic problem using only those 'numerals'


And output the equivalent integer result in the given form.

Here's an example:

INPUT

abcdefghij

bcd + efg + hij


OUTPUT

bdgi


In the example, the input list (you may choose which form the list comes in) of 'abcdefghij' corresponds to '0123456789' just as 'hjkloiwdfp' would also correspond 1 to 1 with '0123456789' where instead of 'a' associating with zero, 'h' does. The arithmetic following 'translates' to 123 + 456 + 789, which equals 1368. This must then be outputted in the form we gave it, so b (which represents 1) d (for 2) g (for 6) and i (for 8).

TEST CASES

abcdefghij
abc + def - ghij

-gedc


qwertyuiop
qwerty / uiop

e


%y83l;[=9|
(83l * 9) + 8%

y9|8


MORE RULES


Standard
Loopholes
are forbidden!
This is code golf, so shortest answers in bytes wins.
Must be a full program or function taking the inputs and outputs in whatever format works best for you. (Just cannot add additioal information in the inputs, just 'numerals' and the expression.
Use any language you'd like (as long as it complies with other rules)
05AB1E, 10 9 bytes
žh‡.Eò¹Åв

(Now) outputs as a list of characters.
Try it online or verify all test cases.
Explanation:

  ‡        # Transliterate the second (implicit) input, replacing every character of 
           # the first (implicit) input with:
žh         # The builtin &quot;0123456789&quot;
   .E      # Then evaluate it as Elixir code
     ò     # Round it to the nearest integer
      ¹Åв  # And change it back by using a custom base-conversion with the first input as
           # base (which results in a character list)
           # (after which that result is output implicitly)

The new version of 05AB1E is build is build in Elixir. The .E function will call call_unary(fn x -&gt; {result, _} = Code.eval_string(to_string(x)); result end, a), where the Code.eval_string is an Elixir builtin.
Note that the legacy version of 05AB1E won't work for this, because it is build in Python. The numbers with leading 0s won't be evaluated:
See all test cases in the legacy version (which uses the 10-byte version because the Åв builtin is new).