I'm sorry if it was explained already somewhere but here is small investigation I made.
So, I mined the same tile with different str*Qpickaxe combinations:
template for results below:
str*Qpickaxe ~~ sqrt(Str*Qpickaxe) aka "wall hardness" ~~ message I got
Here is what I got:
27*10.7 ~~ 17 ~~ much too hard
27*12 ~~ 18 ~~ slightly too hard
75*10.7 ~~ 28.3 ~~ slightly too hard
80*10.7 ~~ 29.2 ~~ I was able to mine
So, it looks like the formula is the following:
difference = wall hardness - sqrt(Qpickaxe*Str)
if difference < 0 then you can mine
if difference < 10 then you will get "slightly too hard" message
if difference < 20 (not confirmed) then you will get "much too hard" message
etc..
So if you have "slightly too hard wall" you can try different pickaxe/str combinations to find sqrt(Str*Qaxe) where "much too hard" starts.
By adding 10 to that value you are getting actual wall hardness, so u know what are your Str and Qaxe should be to be able to mine there.