#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <unordered_set>
#define llint unsigned long long
#define H 1000000007

using namespace std;

string s, t;
unordered_set<llint> S;
llint bekiH[4005], sumH[4005];

llint get(llint cnt[])
{
  llint ret = 0;
  for(int i = 0; i < 26; i++){
    ret *= bekiH[cnt[i]];
    ret += sumH[cnt[i]]*(i+'a');
  }
  return ret;
}

int main(void)
{
  cin >> s >> t;

  bekiH[0] = 1;
  for(int i = 1; i < 4005; i++) bekiH[i] = bekiH[i-1]*H;
  for(int i = 1; i < 4005; i++) sumH[i] = sumH[i-1] + bekiH[i];

  llint cnt[26];
  llint ans = 0;
  for(int l = 1; l <= s.size(); l++){

    S.clear();
    for(int j = 0; j < 26; j++) cnt[j] = 0;
    for(int j = 0; j < l-1; j++) cnt[t[j]-'a']++;
    for(int i = 0; i < t.size(); i++){
      int j = i+l-1;
      if(j >= t.size()) break;
      cnt[t[j]-'a']++;
      llint hash = get(cnt);
      S.insert(hash);
      cnt[t[i]-'a']--;
    }

    for(int j = 0; j < 26; j++) cnt[j] = 0;
    for(int j = 0; j < l-1; j++) cnt[s[j]-'a']++;
    for(int i = 0; i < s.size(); i++){
      int j = i+l-1;
      if(j >= s.size()) break;
      cnt[s[j]-'a']++;
      llint hash = get(cnt);
      if(S.count(hash)){
        ans = l;
        break;
      }
      cnt[s[i]-'a']--;
    }
  }
  cout << ans << endl;

  return 0;
}

