#include<bits/stdc++.h>
#define int long long
using namespace std;
int read() {
char ch=getchar();
int f=1,x=0;
while(ch<'0'||ch>'9') {
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return f*x;
}
const int MAXN=2e5+10;
int n,m;
int sa[MAXN],rnk[MAXN],height[MAXN],tmp[MAXN],a[MAXN],b[MAXN],cnt[MAXN],calc[MAXN],bel[MAXN];
char s[MAXN];
void bucket_sort(int v[]) {
fill(cnt,cnt+m+1,0);
for(int i=1;i<=n;i++) {
cnt[v[i]+1]++;
}
for(int i=1;i<=m;i++) {
cnt[i]+=cnt[i-1];
}
for(int i=1;i<=n;i++) {
tmp[++cnt[v[sa[i]]]]=sa[i];
}
for(int i=1;i<=n;i++) {
sa[i]=tmp[i];
}
}
void get_sa() {
for(int i=1;i<=n;i++) {
rnk[i]=tmp[i]=s[i];
sa[i]=i;
}
sort(tmp+1,tmp+n+1);
m=unique(tmp+1,tmp+n+1)-tmp-1;
for(int i=1;i<=n;i++) {
rnk[i]=lower_bound(tmp+1,tmp+m+1,rnk[i])-tmp;
}
for(int l=1;l<n;l<<=1) {
for(int i=1;i<=n;i++) {
a[i]=rnk[i];
b[i]=(i+l<=n? rnk[i+l]:0);
}
bucket_sort(b);
bucket_sort(a);
m=0;
for(int i=1;i<=n;i++) {
if(a[sa[i]]!=a[sa[i-1]]||b[sa[i]]!=b[sa[i-1]]) {
m++;
}
rnk[sa[i]]=m;
}
}
}
void get_height() {
int h=0;
for(int i=1;i<=n;i++) {
if(h) {
h--;
}
if(rnk[i]==1) {
continue;
}
int p=i+h;
int q=sa[rnk[i]-1]+h;
while(p<=n&&q<=n&&s[p]==s[q]) {
p++;
q++;
h++;
}
height[rnk[i]]=h;
}
}
int solve() {
int ans=1e9+10;
bool flag=0;
for(int i=2;i<=n;i++) {
if(height[i]>height[i-1]&&height[i]>height[i+1]) {
if(bel[sa[i]]!=bel[sa[i-1]]) {
ans=min(max(height[i-1],height[i+1])+1,ans);
flag=1;
}
}
}
return flag? ans:-1;
}
signed main() {
scanf("%s",s+1);
n=strlen(s+1);
for(int i=1;i<=n;i++) {
bel[i]=1;
}
s[n+1]='$';
scanf("%s",s+n+2);
n=strlen(s+1);
for(int i=1;i<=n;i++) {
if(!bel[i]&&s[i]!='$') {
bel[i]=2;
}
}
get_sa();
get_height();
printf("%lld\n",solve());
return 0;
}
559. Maximum Depth of N-ary Tree | 821. Shortest Distance to a Character |
1441. Build an Array With Stack Operations | 1356. Sort Integers by The Number of 1 Bits |
922. Sort Array By Parity II | 344. Reverse String |
1047. Remove All Adjacent Duplicates In String | 977. Squares of a Sorted Array |
852. Peak Index in a Mountain Array | 461. Hamming Distance |
1748. Sum of Unique Elements | 897. Increasing Order Search Tree |
905. Sort Array By Parity | 1351. Count Negative Numbers in a Sorted Matrix |
617. Merge Two Binary Trees | 1450. Number of Students Doing Homework at a Given Time |
700. Search in a Binary Search Tree | 590. N-ary Tree Postorder Traversal |
589. N-ary Tree Preorder Traversal | 1299. Replace Elements with Greatest Element on Right Side |
1768. Merge Strings Alternately | 561. Array Partition I |
1374. Generate a String With Characters That Have Odd Counts | 1822. Sign of the Product of an Array |
1464. Maximum Product of Two Elements in an Array | 1323. Maximum 69 Number |
832. Flipping an Image | 1295. Find Numbers with Even Number of Digits |
1704. Determine if String Halves Are Alike | 1732. Find the Highest Altitude |