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# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;

//AGC006 Prefix and Suffix
//http://agc006.contest.atcoder.jp/tasks/agc006_a
class Program
{
    static string InputPattern = "InputX";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("3");
            WillReturn.Add("abc");
            WillReturn.Add("cde");
            //5
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("1");
            WillReturn.Add("a");
            WillReturn.Add("z");
            //2
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("4");
            WillReturn.Add("expr");
            WillReturn.Add("expr");
            //4
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        string s = InputList[1];
        string t = InputList[2];

        //文字列sの添字Iから文字列tを上書き
        for (int I = 0; I <= s.Length - 1; I++) {
            string wkStr = s.Remove(I);
            wkStr += t;

            if (wkStr.StartsWith(s) == false) continue;
            if (wkStr.EndsWith(t) == false) continue;
            Console.WriteLine(wkStr.Length);
            return;
        }

        //文字列sの後に文字列tを連結
        Console.WriteLine((s + t).Length);
    }
}