#include <bits/stdc++.h>
#define rep(i,n) for(int i=0; i<(n); i++)

using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

const ll MOD0 = 1e9+7;
const ll MOD1 = 1e9+9;
const ll base = 4007;

ll modpow(ll a, int n, ll q){
	ll ret = 1, k = a;
	for(int i=0; (1<<i)<=n; i++){
		if( (1<<i)&n ) ret = ret * k % q;
		k = k*k % q;
	}
	return ret;
}

int main(){

//	ll p=0;
//	{
//		bool f[10000]={};
//		for(int i=2; i<10000; i++){
//			if( !f[i] ){
//				if( i>4005 ){
//					p = i;
//					break;
//				}
//				for(int j=i; j<10000; j+=i) f[j] = true;
//			}
//		}
//	}

	string s[2];
	rep(i,2) cin >> s[i];

	int ans = 0;
	ll hs[2][2][4005]={};
	rep(l,min(s[0].length(),s[1].length()) ){
		//cout << l << endl;
		set<pii> st;
		rep(k,2){
			rep(i,s[k].length()-l){
				int c = s[k][i+l] - 'a' + 1;
				hs[k][0][i] += modpow(base, c, MOD0);
				hs[k][0][i] %= MOD0;
				hs[k][1][i] += modpow(base, c, MOD1);
				hs[k][1][i] %= MOD1;
				auto key = pii(hs[k][0][i], hs[k][1][i]);
				if( k == 0 ){
					//cout << "insert " << i << " " << l+1 << " " << key << endl;
					st.insert( key );
				}else{
					//cout << "count  " << i << " " << l+1 << " " << key << endl;
					if( st.count(key) ){
						ans = max(ans, l+1);
					}
				}
			}
		}
	}

	cout << ans << endl;

	return 0;
}