#include <bits/stdc++.h>
#define gc getchar
#define pc putchar
using namespace std;
/*#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
*/
/*
two functions for policy based data structure. it is
find_by_order() and order_of_key().
The first returns an iterator to the k-th largest element (counting from zero),
the second returns the number of items in a set that are strictly smaller than our item
*/
#define vi vector<int>
#define si set<int>
#define vs vector<string>
#define pii pair<int,int>
#define vpi vector<pii>
#define pri priority_queue<int>
#define rev_pri priority_queue<int,vector<int>,greater<int> >
#define mpi map<int,int>
#define i64 long long int
#define endl '\n'
#define pi acos(-1)
#define all(v) v.begin(),v.end()
#define pb push_back
#define mp make_pair
#define For(i,n) for(int i=0;i<n;i++)
#define Rep(i,x,y) for(int i=x;i<=y;i++)
#define eps 1e-8
#define ff first
#define ss second
#define mem(a,b) memset(a,b,sizeof(a))
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ freopen("input.txt", "r", stdin)
#define WRITE freopen("output.txt","w", stdout)
#define sz size()
#define dbg(x) printf("yo is %d!\n",x)
#define dbg2(x,y) printf("yo is %d! and %d!\n",x,y)
#define foreach(i,c) for(__typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define sqr(a) (a) * (a)
#define clr clear()
#define CASE(a) printf("Case %d: ",a)
#define sf(n) scanf("%d", &n)
#define sff(a,b) scanf("%d %d", &a, &b)
#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
//int dx[] = {0,1,0,-1};
//int dy[] = {1,0,-1,0};
//int dx[] = { -1, -1, 0, 1, 1, 1, 0, -1 };
//int dy[] = { 0, -1, -1, -1, 0, 1, 1, 1 };
//int dxK[] = { -2, -2, -1, 1, 2, 2, 1, -1 };
//int dyK[] = { -1, 1, 2, 2, 1, -1, -2, -2 };
//functions
//i64 gcd(i64 a,i64 b){if(!b)return a;return gcd(b,a%b);}
//inline void fastRead(i64 *a){register char c=0;while(c<33)c=gc();*a=0;while(c>33){*a=*a*10+c-'0';c=gc();}}
//inline void fastWrite(int a){char snum[20];int i=0;do{snum[i++]=a%10+48;a=a/10;}while(a!=0);i=i-1;while(i>=0)pc(snum[i--]);pc('\n');}
//i64 bigmod(i64 num,i64 n){if(!n)return 1;i64 x=(bigmod(num,n/2)*bigmod(num,n/2))%mod;if(n%2)x=(x*num)%mod;return x;}
//i64 modinverse(i64 num){return bigmod(num,mod-2);}
//void combination(int pos,int last){if(pos==k+1){for(int i=1;i<=k;i++)cout << tem[i];cout << endl;return;}
//for(int i=last+1;i<=n-k+pos;i++){tem[pos] = num[i-1];combination(pos+1,i);}}
//i64 power(i64 value, i64 base){i64 result = 1;For(i,base)result *= value;return result;}
//int Set(int N,int pos){return N = (1<<pos);}
//int reset(int N,int pos){return N &= (~(1<<pos));}
//bool check(int N,int pos){return (bool)(N & (1<<pos));}
//typedef tree< int, null_type, less < int >, rb_tree_tag, tree_order_statistics_node_update > Set;
#define MAX 250005
#define p1 131
#define p2 999683
#define p3 169
#define mod1 1000000007
#define mod2 1000000009
#define mod3 1000000021
i64 mod;
i64 bigmod(i64 num,i64 n) // used to calculate num^n
{
if(n==0)
return 1;
i64 x = bigmod(num,n/2);
x = x*x%mod;
if(n%2==1)
x = x*num % mod;
return x;
}
i64 modinverse(i64 num)
{
return bigmod(num,mod-2) % mod;
}
i64 pr1[MAX], pr2[MAX], pr3[MAX];
i64 h1, h2, h3, h4, h5, h6;
void prime_calc()
{
pr1[0] = 1;
pr2[0] = 1;
pr3[0] = 1;
Rep(i,1,MAX-1)
{
pr1[i] = (pr1[i-1] * p1) % mod1;
pr2[i] = (pr2[i-1] * p2) % mod2;
pr3[i] = (pr3[i-1] * p3) % mod3;
}
}
int main()
{
prime_calc();
int n;
cin >> n;
string s1, s2;
cin >> s1 >> s2;
if(s1==s2)
{
cout << 0 << endl;
return 0;
}
int cnt = 0;
for(int i = s1.sz-1; i>=0; i--)
{
h1 += (s1[i]*pr1[cnt])%mod1;
h1 %= mod1;
h2 += (s1[i]*pr2[cnt])%mod2;
h2 %= mod2;
h3 += (s1[i]*pr3[cnt])%mod3;
h3 %= mod3;
h4 += (s2[i]*pr1[cnt])%mod1;
h4 %= mod1;
h5 += (s2[i]*pr2[cnt])%mod2;
h5 %= mod2;
h6 += (s2[i]*pr3[cnt])%mod3;
h6 %= mod3;
cnt++;
}
//cout << h1 << " " << h2 << " " << h3 << " " << h4 << " " << h5 << " " << h6 << endl;
Rep(i,1,n-1)
{
h1 = (h1-s1[n-i]+mod1)%mod1;
mod = mod1;
h1 = h1*modinverse(p1);
h1 %= mod1;
h2 = (h2-s1[n-i]+mod2)%mod2;
mod = mod2;
h2 = h2*modinverse(p2);
h2 %= mod2;
h3 = (h3-s1[n-i]+mod3)%mod3;
mod = mod3;
h3 = h3*modinverse(p3);
h3 %= mod3;
//cout << h1 << " " << h2 << " " << h3 << " " << h4 << " " << h5 << " " << h6 << endl;
h1 += (s1[n-i]*pr1[n-1])%mod1;
h1 %= mod1;
h2 += (s1[n-i]*pr2[n-1])%mod2;
h2 %= mod2;
h3+= (s1[n-i]*pr3[n-1])%mod3;
h3 %= mod3;
//cout << h1 << " " << h2 << " " << h3 << " " << h4 << " " << h5 << " " << h6 << endl;
if(h1==h4 && h2==h5 && h3==h6)
{
cout << i << endl;
return 0;
}
}
cout << -1 << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgoKI2RlZmluZSBnYyBnZXRjaGFyCiNkZWZpbmUgcGMgcHV0Y2hhcgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8qI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvZGV0YWlsL3N0YW5kYXJkX3BvbGljaWVzLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgoKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiovCgovKgogICAgICAgIHR3byBmdW5jdGlvbnMgZm9yIHBvbGljeSBiYXNlZCBkYXRhIHN0cnVjdHVyZS4gaXQgaXMKCiAgICAgICAgICAgICAgICBmaW5kX2J5X29yZGVyKCkgYW5kIG9yZGVyX29mX2tleSgpLgoKICAgICAgICBUaGUgZmlyc3QgcmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgay10aCBsYXJnZXN0IGVsZW1lbnQgKGNvdW50aW5nIGZyb20gemVybyksCiAgICAgICAgdGhlIHNlY29uZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQgdGhhdCBhcmUgc3RyaWN0bHkgc21hbGxlciB0aGFuIG91ciBpdGVtCgoqLwoKI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHNpIHNldDxpbnQ+CiNkZWZpbmUgdnMgdmVjdG9yPHN0cmluZz4KI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHZwaSB2ZWN0b3I8cGlpPgojZGVmaW5lIHByaSBwcmlvcml0eV9xdWV1ZTxpbnQ+CiNkZWZpbmUgcmV2X3ByaSBwcmlvcml0eV9xdWV1ZTxpbnQsdmVjdG9yPGludD4sZ3JlYXRlcjxpbnQ+ID4KI2RlZmluZSBtcGkgbWFwPGludCxpbnQ+CiNkZWZpbmUgaTY0IGxvbmcgbG9uZyBpbnQKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBwaSBhY29zKC0xKQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksdi5lbmQoKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIEZvcihpLG4pIGZvcihpbnQgaT0wO2k8bjtpKyspCiNkZWZpbmUgUmVwKGkseCx5KSBmb3IoaW50IGk9eDtpPD15O2krKykKI2RlZmluZSBlcHMgMWUtOAojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgbWVtKGEsYikgbWVtc2V0KGEsYixzaXplb2YoYSkpCiNkZWZpbmUgbWluMyhhLGIsYykgbWluKGEsbWluKGIsYykpCiNkZWZpbmUgbWF4MyhhLGIsYykgbWF4KGEsbWF4KGIsYykpCiNkZWZpbmUgUkVBRCBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKQojZGVmaW5lIFdSSVRFIGZyZW9wZW4oIm91dHB1dC50eHQiLCJ3Iiwgc3Rkb3V0KQojZGVmaW5lIHN6IHNpemUoKQojZGVmaW5lIGRiZyh4KSBwcmludGYoInlvIGlzICVkIVxuIix4KQojZGVmaW5lIGRiZzIoeCx5KSBwcmludGYoInlvIGlzICVkISBhbmQgJWQhXG4iLHgseSkKI2RlZmluZSBmb3JlYWNoKGksYykgZm9yKF9fdHlwZW9mKChjKS5iZWdpbigpKSBpID0gKGMpLmJlZ2luKCk7IGkgIT0gKGMpLmVuZCgpOyBpKyspCiNkZWZpbmUgc3FyKGEpIChhKSAqIChhKQojZGVmaW5lIGNsciBjbGVhcigpCiNkZWZpbmUgQ0FTRShhKSBwcmludGYoIkNhc2UgJWQ6ICIsYSkKI2RlZmluZSBzZihuKSBzY2FuZigiJWQiLCAmbikKI2RlZmluZSBzZmYoYSxiKSBzY2FuZigiJWQgJWQiLCAmYSwgJmIpCiNkZWZpbmUgc2ZmZihhLGIsYykgc2NhbmYoIiVkICVkICVkIiwgJmEsICZiLCAmYykKCi8vaW50IGR4W10gPSB7MCwxLDAsLTF9OwovL2ludCBkeVtdID0gezEsMCwtMSwwfTsKLy9pbnQgZHhbXSA9IHsgLTEsIC0xLCAgMCwgMSwgMSwgMSwgIDAsIC0xIH07Ci8vaW50IGR5W10gPSB7ICAwLCAtMSwgLTEsIC0xLCAgMCwgMSwgMSwgMSB9OwovL2ludCBkeEtbXSA9IHsgLTIsIC0yLCAtMSwgMSwgMiwgMiwgMSwgLTEgfTsKLy9pbnQgZHlLW10gPSB7IC0xLCAxLCAyLCAyLCAxLCAtMSwgLTIsIC0yIH07CgovL2Z1bmN0aW9ucwoKLy9pNjQgZ2NkKGk2NCBhLGk2NCBiKXtpZighYilyZXR1cm4gYTtyZXR1cm4gZ2NkKGIsYSViKTt9CgovL2lubGluZSB2b2lkIGZhc3RSZWFkKGk2NCAqYSl7cmVnaXN0ZXIgY2hhciBjPTA7d2hpbGUoYzwzMyljPWdjKCk7KmE9MDt3aGlsZShjPjMzKXsqYT0qYSoxMCtjLScwJztjPWdjKCk7fX0KCi8vaW5saW5lIHZvaWQgZmFzdFdyaXRlKGludCBhKXtjaGFyIHNudW1bMjBdO2ludCBpPTA7ZG97c251bVtpKytdPWElMTArNDg7YT1hLzEwO313aGlsZShhIT0wKTtpPWktMTt3aGlsZShpPj0wKXBjKHNudW1baS0tXSk7cGMoJ1xuJyk7fQoKLy9pNjQgYmlnbW9kKGk2NCBudW0saTY0IG4pe2lmKCFuKXJldHVybiAxO2k2NCB4PShiaWdtb2QobnVtLG4vMikqYmlnbW9kKG51bSxuLzIpKSVtb2Q7aWYobiUyKXg9KHgqbnVtKSVtb2Q7cmV0dXJuIHg7fQoKLy9pNjQgbW9kaW52ZXJzZShpNjQgbnVtKXtyZXR1cm4gYmlnbW9kKG51bSxtb2QtMik7fQoKLy92b2lkIGNvbWJpbmF0aW9uKGludCBwb3MsaW50IGxhc3Qpe2lmKHBvcz09aysxKXtmb3IoaW50IGk9MTtpPD1rO2krKyljb3V0IDw8IHRlbVtpXTtjb3V0IDw8IGVuZGw7cmV0dXJuO30KLy9mb3IoaW50IGk9bGFzdCsxO2k8PW4taytwb3M7aSsrKXt0ZW1bcG9zXSA9IG51bVtpLTFdO2NvbWJpbmF0aW9uKHBvcysxLGkpO319Ci8vaTY0IHBvd2VyKGk2NCB2YWx1ZSwgaTY0IGJhc2Upe2k2NCByZXN1bHQgPSAxO0ZvcihpLGJhc2UpcmVzdWx0ICo9IHZhbHVlO3JldHVybiByZXN1bHQ7fQovL2ludCBTZXQoaW50IE4saW50IHBvcyl7cmV0dXJuIE4gPSAoMTw8cG9zKTt9Ci8vaW50IHJlc2V0KGludCBOLGludCBwb3Mpe3JldHVybiBOICY9ICh+KDE8PHBvcykpO30KLy9ib29sIGNoZWNrKGludCBOLGludCBwb3Mpe3JldHVybiAoYm9vbCkoTiAmICgxPDxwb3MpKTt9CgovL3R5cGVkZWYgdHJlZTwgaW50LCBudWxsX3R5cGUsIGxlc3MgPCBpbnQgPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZSA+IFNldDsKCiNkZWZpbmUgTUFYIDI1MDAwNQojZGVmaW5lIHAxIDEzMQojZGVmaW5lIHAyIDk5OTY4MwojZGVmaW5lIHAzIDE2OQojZGVmaW5lIG1vZDEgMTAwMDAwMDAwNwojZGVmaW5lIG1vZDIgMTAwMDAwMDAwOQojZGVmaW5lIG1vZDMgMTAwMDAwMDAyMQoKaTY0IG1vZDsKCmk2NCBiaWdtb2QoaTY0IG51bSxpNjQgbikgICAvLyB1c2VkIHRvIGNhbGN1bGF0ZSBudW1ebgp7CiAgICBpZihuPT0wKQogICAgICAgIHJldHVybiAxOwogICAgaTY0IHggPSBiaWdtb2QobnVtLG4vMik7CiAgICB4ID0geCp4JW1vZDsKICAgIGlmKG4lMj09MSkKICAgICAgICB4ID0geCpudW0gJSBtb2Q7CiAgICByZXR1cm4geDsKfQoKaTY0IG1vZGludmVyc2UoaTY0IG51bSkKewogICAgcmV0dXJuIGJpZ21vZChudW0sbW9kLTIpICUgbW9kOwp9CgppNjQgcHIxW01BWF0sIHByMltNQVhdLCBwcjNbTUFYXTsKCmk2NCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2OwoKdm9pZCBwcmltZV9jYWxjKCkKewogICAgcHIxWzBdID0gMTsKICAgIHByMlswXSA9IDE7CiAgICBwcjNbMF0gPSAxOwoKICAgIFJlcChpLDEsTUFYLTEpCiAgICB7CiAgICAgICAgcHIxW2ldID0gKHByMVtpLTFdICogcDEpICUgbW9kMTsKICAgICAgICBwcjJbaV0gPSAocHIyW2ktMV0gKiBwMikgJSBtb2QyOwogICAgICAgIHByM1tpXSA9IChwcjNbaS0xXSAqIHAzKSAlIG1vZDM7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgcHJpbWVfY2FsYygpOwogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICBzdHJpbmcgczEsIHMyOwogICAgY2luID4+IHMxID4+IHMyOwoKICAgIGlmKHMxPT1zMikKICAgIHsKICAgICAgICBjb3V0IDw8IDAgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBpbnQgY250ID0gMDsKCiAgICBmb3IoaW50IGkgPSBzMS5zei0xOyBpPj0wOyBpLS0pCiAgICB7CiAgICAgICAgaDEgKz0gKHMxW2ldKnByMVtjbnRdKSVtb2QxOwogICAgICAgIGgxICU9IG1vZDE7CiAgICAgICAgaDIgKz0gKHMxW2ldKnByMltjbnRdKSVtb2QyOwogICAgICAgIGgyICU9IG1vZDI7CiAgICAgICAgaDMgKz0gKHMxW2ldKnByM1tjbnRdKSVtb2QzOwogICAgICAgIGgzICU9IG1vZDM7CiAgICAgICAgaDQgKz0gKHMyW2ldKnByMVtjbnRdKSVtb2QxOwogICAgICAgIGg0ICU9IG1vZDE7CiAgICAgICAgaDUgKz0gKHMyW2ldKnByMltjbnRdKSVtb2QyOwogICAgICAgIGg1ICU9IG1vZDI7CiAgICAgICAgaDYgKz0gKHMyW2ldKnByM1tjbnRdKSVtb2QzOwogICAgICAgIGg2ICU9IG1vZDM7CiAgICAgICAgY250Kys7CiAgICB9CgogICAgLy9jb3V0IDw8IGgxIDw8ICIgIiA8PCBoMiA8PCAiICIgPDwgaDMgPDwgIiAiIDw8IGg0IDw8ICIgIiA8PCBoNSA8PCAiICIgPDwgaDYgPDwgZW5kbDsKCiAgICBSZXAoaSwxLG4tMSkKICAgIHsKICAgICAgICBoMSA9IChoMS1zMVtuLWldK21vZDEpJW1vZDE7CiAgICAgICAgbW9kID0gbW9kMTsKICAgICAgICBoMSA9IGgxKm1vZGludmVyc2UocDEpOwogICAgICAgIGgxICU9IG1vZDE7CgogICAgICAgIGgyID0gKGgyLXMxW24taV0rbW9kMiklbW9kMjsKICAgICAgICBtb2QgPSBtb2QyOwogICAgICAgIGgyID0gaDIqbW9kaW52ZXJzZShwMik7CiAgICAgICAgaDIgJT0gbW9kMjsKCiAgICAgICAgaDMgPSAoaDMtczFbbi1pXSttb2QzKSVtb2QzOwogICAgICAgIG1vZCA9IG1vZDM7CiAgICAgICAgaDMgPSBoMyptb2RpbnZlcnNlKHAzKTsKICAgICAgICBoMyAlPSBtb2QzOwogICAgICAgIC8vY291dCA8PCBoMSA8PCAiICIgPDwgaDIgPDwgIiAiIDw8IGgzIDw8ICIgIiA8PCBoNCA8PCAiICIgPDwgaDUgPDwgIiAiIDw8IGg2IDw8IGVuZGw7CiAgICAgICAgaDEgKz0gKHMxW24taV0qcHIxW24tMV0pJW1vZDE7CiAgICAgICAgaDEgJT0gbW9kMTsKICAgICAgICBoMiArPSAoczFbbi1pXSpwcjJbbi0xXSklbW9kMjsKICAgICAgICBoMiAlPSBtb2QyOwogICAgICAgIGgzKz0gKHMxW24taV0qcHIzW24tMV0pJW1vZDM7CiAgICAgICAgaDMgJT0gbW9kMzsKCiAgICAgICAgLy9jb3V0IDw8IGgxIDw8ICIgIiA8PCBoMiA8PCAiICIgPDwgaDMgPDwgIiAiIDw8IGg0IDw8ICIgIiA8PCBoNSA8PCAiICIgPDwgaDYgPDwgZW5kbDsKCiAgICAgICAgaWYoaDE9PWg0ICYmIGgyPT1oNSAmJiBoMz09aDYpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8IGkgPDwgZW5kbDsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgLTEgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=