import Control.Applicative ((<$>), (<*>)) import Data.List (group) main :: IO () main = solve <$> readLn <*> getLine <*> getLine >>= print solve :: Int -> String -> String -> Int solve d s1 s2 = f 0 ls where ls = 0 : ((map length . group) ((replicate 14 'x') ++ s1 ++ s2 ++ (replicate 14 'x'))) ++ [0] f mc (o1:x:o2:xs) | x <= d = f (max mc (o1 + x + o2)) (o2:xs) | otherwise = f (max mc ((max o1 o2) + d)) (o2:xs) f mc _ = mc