Forse ho capito.
Il fatto che funzioni dichiarando solution e' un puro caso, credo.
Il punto, secondo me, e' che chiami una scanf su un char con un segnaposto %s, mentre un char dovrebbe essere letto con un %c, giusto?
Questo potrebbe portare a una sovrascrittura di qualche variabile locale.