We are "working" with classical logic, when we assume that r ∧ ~s is equivalent to : ~(r → s) [and so : (r → s) is equivalent to : ~(r ∧ ~s)].
Also the tautology : (r → s) ∨ (s → r) (called : Dummett's law) is valid in classical logic only.
Now, if we apply the equivalence above to the premise (1), we can rewrite it as :
~(r ∧ ~s) ∨ ~(s ∧ ~r).
Having assumed : (r ∧ ~s) as premise (2), by Disjunctive syllogism we are "forced" to conclude with :
~(s ∧ ~r)
which is exactly :
(s → r).
Assuming the "context" of classical logic, there are no steps in your argument "where you have gone wrong".
Assuming the tautology (1), you have assumed the disjunction between the two alternatives :
"not (rain without snow)" , "not (snow without rain)".
This is a tautology, i.e. a logical truth; thus, it must be true in every "situation".
Then we have premise (2) :
"today it's raining but not snowing"
that is not a logical truth; it is "contingent" proposition, describing an actual situation : today we have rain without snow.
By logical steps we have concluded with (4) :
"if it's snowing, then it's raining".
But we have to refrain to committ a fallacy : (4) is a logical consequence of (1) and (2). This means that it must be true whenever (1) and (2) are.
But (2) is not a logical truth, i.e. it is not true in every possible situation; thus also the conclusion of the (valid) argument is not a logical law, i.e. it is not true in every possible situation.
We can conclude that (4) is true in the situation "described" by (2) [(1) is ininfluent, due to the fact that is true "everywhere]; not that in every possible situation it is true : you have noted that "there are days in winter where it snows but does not rain".
This is the "solution" of the puzzle.
In assuming (2) we are committing ourselves to the falsity of s, because the only way to satisfy (r ∧ ~s) is when both r and ~s are true, i.e. when r is true and s is false.
Having assumed classical logic, the fact that s is false licences us - by the truth conditions for the conditional - to assert that (s → r) is true.