D = int(input()) s1 = input().strip() s2 = input().strip() s = s1 + s2 def create_intervals(s): if not s: return [] intervals = [] current_char = s[0] start = 0 for i in range(1, len(s)): if s[i] == current_char: continue else: intervals.append((current_char, start, i-1)) current_char = s[i] start = i intervals.append((current_char, start, len(s)-1)) return intervals intervals = create_intervals(s) max_o = 0 for interval in intervals: if interval[0] == 'o': max_o = max(max_o, interval[2] - interval[1] + 1) if D == 0: print(max_o) else: max_candidate = max_o # Process x intervals for i in range(len(intervals)): interval = intervals[i] if interval[0] != 'x': continue x_len = interval[2] - interval[1] + 1 available = min(D, x_len) prev_o = intervals[i-1] if i > 0 and intervals[i-1][0] == 'o' else None next_o = intervals[i+1] if i < len(intervals)-1 and intervals[i+1][0] == 'o' else None if prev_o and next_o: total = (prev_o[2] - prev_o[1] + 1) + available + (next_o[2] - next_o[1] + 1) max_candidate = max(max_candidate, total) elif prev_o: total = (prev_o[2] - prev_o[1] + 1) + available max_candidate = max(max_candidate, total) elif next_o: total = available + (next_o[2] - next_o[1] + 1) max_candidate = max(max_candidate, total) else: max_candidate = max(max_candidate, available) # Process o intervals for i in range(len(intervals)): interval = intervals[i] if interval[0] != 'o': continue o_len = interval[2] - interval[1] + 1 # Previous x part if i == 0: total = D + o_len max_candidate = max(max_candidate, total) else: prev_interval = intervals[i-1] if prev_interval[0] == 'x': a = prev_interval[2] - prev_interval[1] + 1 available = min(D, a) total = available + o_len max_candidate = max(max_candidate, total) # Next x part if i == len(intervals) - 1: total = o_len + D max_candidate = max(max_candidate, total) else: next_interval = intervals[i+1] if next_interval[0] == 'x': b = next_interval[2] - next_interval[1] + 1 available = min(D, b) total = o_len + available max_candidate = max(max_candidate, total) # Check front and back infinite x parts # Front x part if intervals[0][0] == 'o': total = D + (intervals[0][2] - intervals[0][1] + 1) max_candidate = max(max_candidate, total) else: max_candidate = max(max_candidate, D) # Back x part if intervals[-1][0] == 'o': total = (intervals[-1][2] - intervals[-1][1] + 1) + D max_candidate = max(max_candidate, total) else: max_candidate = max(max_candidate, D) # Check D alone max_candidate = max(max_candidate, D) print(max_candidate)