I just put a Knoxx Tactical stock on my 870. It has 4" of adjustment. Not cheap though, I think I paid around $125 on Ebay for stock and forend. It also has the recoil reduction system in it. If your not wanting the recoil reduction, you can find them for less.
I bought a used 870 Express stock and forearm off ebay. I cut about 1.5" off of it so it would fit better for home defense shotgun. I didn't want to ruin the original Wingmaster stock.
The 870 Youth Model 20 gauge stock will not fit the 870 12 gauge, however they do make a Youth Model stock for the 12 gauge. It has 13 inch length of pull.