In what base this string equals the following decimal value?
Mathematica, 183 bytes * 0.7 = 128.1

f[s_,n_]:=(For[i=2,1&gt;0,++i,d=(l=Length)@(g=IntegerDigits)[n,i];Which[Count[c=Characters@s,c[[-1]]]&gt;1&amp;&amp;d==1,Return@0,l@c&gt;=d&amp;&amp;And@@Unequal@@@(t=Thread)@Union@t@{g[n,i,l@c],c},Print@i]])


Less golf

f[s_, n_] := (
  For[i = 2, 1 &gt; 0, ++i,
   d = (l = Length)@(g = IntegerDigits)[n, i];
   Which[
    Count[c = Characters@s, c[[-1]]] &gt; 1 &amp;&amp; d == 1,
    Return@0,
    l@c &gt;= d &amp;&amp; And @@
      Unequal @@@
       (t = Thread)@
        Union@
         t@
          {g[n, i, l@c], c},
    Print@i
    ]
   ]
  )


I don't actually recommend running this, because quick and infinite output is a bit tricky to abort in Mathematica sometimes. To get only the first result, change Print to Result (which is even a character longer). If you're using the version as is, a final 0 output will indicate that no further bases will be found (similar to the returning case).

The first part of the Which simply aborts the loop when no base can possibly be found (it might be possible to shorten this). The second loop is the interesting check. These are the steps taken:


Convert n to digits in the current base (Mathematica can handle arbitrarily large bases.)
Zip those digits up with the characters, basically creating the mapping at each position.
Union throws out duplicates - these are uninteresting because they just point to a consistent mapping.
Transpose the mapping, so I get a list of digits and a list of characters.
If there are no duplicates in either, we have an injective mapping and print the base.