Problem:
Score : 200 points

Problem Statement

Snuke is interested in strings that satisfy the following conditions:

The length of the string is at least N.

The first N characters equal to the string s.

The last N characters equal to the string t.

Find the length of the shortest string that satisfies the conditions.

Constraints

1≤N≤100

The lengths of s and t are both N.

s and t consist of lowercase English letters.

Input

The input is given from Standard Input in the following format:

N
s
t

Output

Print the length of the shortest string that satisfies the conditions.

Sample Input 1

3
abc
cde

Sample Output 1

5

The shortest string is abcde.

Sample Input 2

1
a
z

Sample Output 2

2

The shortest string is az.

Sample Input 3

4
expr
expr

Sample Output 3

4

The shortest string is expr.

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include <stdio.h>
#include <stdlib.h>

int lex_smaller(char* s1, char* s2)
{
	int i;
	for (i = 0; s1[i] != 0 && s2[i] != 0; i++) {
		if (s1[i] < s2[i]) return 1;
		else if (s1[i] > s2[i]) return -1;
	}
	if (s1[i] == s2[i]) return 0;
	else if (s1[i] == 0) return 1;
	else return -1;
}

int main()
{
	int N;
	char s[101], t[101];
	scanf("%d", &N);
	scanf("%s", s);
	scanf("%s", t);
	
	int i, j, ls, lt, l, ans;
	char sub_s[101] = {}, sub_t[101] = {};
	for (ls = 0; s[ls] != 0; ls++);
	for (lt = 0; t[lt] != 0; lt++);
	l = (ls < lt)? ls: lt;
	ans = ls + lt;
	for (i = 1; i <= l; i++) {
		for (j = 0; j < i; j++) {
			sub_s[j] = s[ls - i + j];
			sub_t[j] = t[j];
		}
		if (lex_smaller(sub_s, sub_t) == 0) ans = ls + lt - i;
	}
	printf("%d\n", ans);
	fflush(stdout);
	return 0;
}