fork(2) download
import Data.List

main = fmap lines getContents >>= \[predmeti,birki] -> let
	(predmeti',birki') = unzip $ head $ soljushen (words predmeti) birki
	in mapM_ (putStrLn . unwords) [predmeti',birki']
	
soljushen [] [] = [[]]
soljushen predmeti birki = [(birka,predmet):solushn | 
	(levo,predmet:pravo) <- zip (inits predmeti) (tails predmeti),
	let birka = zipWith const birki predmet,
	sort predmet == sort birka,
	solushn <- soljushen (levo++pravo) (birki\\birka)]
Time limit exceeded #stdin #stdout 5s 7276KB
stdin
abab ab ab ab ab ab ab ab ab ab ab ab
abababababababababababaabb
stdout
Standard output is empty