rng:!#*data:0:"07.in"
spls:l@&0<#'l:&'"^"=1_data
msks:(+/rng=/:(-1;1)+)@/:/:spls
f:{spl:+/(n@&0<n)*msks[y]@&0<n:|/+t:(1_x)*/:rng=/:spls[y]
str:(1_x)*~|/t
((+/0<n)+*x),str+spl}
:(one;two):(*:;+/1_)@\:(0,"S"=*data) f/!# spls
It was a pleasant surprise that a single fold could solve both parts.