I personally find it easier to think of
color(white)("XXX")(f * g)(x) and (f * g)(-1)
as f(g(x)) and f(g(-1) respectively
Given
color(white)("XXX")f(color(blue)x)=color(blue)x^2-1
then
after simply substituting color(blue)(g(x)) for x
color(white)("XXX")f(color(blue)(g(x)))=(color(blue)(g(x)))^2-1
Now since we are also given that
color(white)("XXX")color(blue)(g(color(magenta)x)=2color(magenta)x-3
after substituting color(blue)(2color(magenta)x-3) for color(blue)(g(x)) above
we get
color(white)("XXX")f(color(blue)(g(color(magenta)x)))=(color(blue)(2color(magenta)x-3))^2-1
Expanding (and dropping the color coding for a bit)
color(white)("XXX")f(g(x))=4x^2-12x+8
...or we could re-color code the variable color(red)x to make this appear as
color(white)("XXX")f(g(color(red)(x)))=4color(red)x^2-12color(red)x+8
Since we are asked for (f * g)(color(red)(-1))
which can be written as f(g(color(red)(-1)))
we can substitute (color(red)(-1)) in place of color(red)x in our definition of f(g(color(red)x))
color(white)("XXX")f(g(color(red)(-1)))=4 * (color(red)(-1))^2-12 * (color(red)(-1))+8
color(white)("XXXXXXXX")=4+12+8
color(white)("XXXXXXXX")=24