#include<iostream>
#include<stdio.h>
#include<vector>
#include<string>
#include<cstdlib>
using namespace std;
//
//
//第一题 去饭店吃饭 一个男人3元 一个女人2元 一个小孩1元 现输入总人数和总花费
//问有几种不同的组合方式(必须至少有一个男人一个女人一个小孩)
//第二题 走廊上有n盏灯 按1到n序号顺序排好 刚开始都是关着的 现有n个人 编号1
//到n 编号为1的人从走廊一端走到另一端 把编号是1的倍数的灯开关都动一下(开变
//关,关变开) 接着编号是2的人把编号是2的倍数的灯开关都动一下。。。一直到第n个
//人 输入n要求输出最后还有几盏灯是亮着的
//
//第三题 输入两个字符串(都是字母) a到z每个字母有一个权值(1-26) 不区分大小
//写 哪个字母分配哪个权值由你决定 字符串的权值就是字符串中所有字母的权值之和
//现要求自行分配权值 使得两个字符串的权值之差最大 输出最大权值之差(提示:先把
//字符串中的相同字母去掉,再分配权值)
inline int charComp(const void* t1, const void* t2)
{
return ( *(char*)t1 -*(char*)t2 );
}
inline int intComp(const void* t1, const void* t2)
{
return -( *(int*)t1 -*(int*)t2 );
}
int main()
{
// 1.
//int pepleNum;
//int costNum;
//int money[4] = {0,1, 2,3};
//int countMe=0;
//while (scanf_s("%d%d", &pepleNum, &costNum)!= EOF)
//{
// for (int i = 0; i <= pepleNum; i++)
// {
// for (int j = 0; j <= pepleNum; j++)
// {
// for (int k = 0; k <= pepleNum; k++)
// {
// if (i+j+k == pepleNum)
// {
// if (i*1+j*2+k*3 == costNum)
// {
// countMe++;
// }
// }
// }
// }
// }
// cout<<countMe<<endl;
//}
// 2.
//int num;
//while (scanf_s("%d", &num))
//{
// int result =0;
// vector<int> tempVec(num+1, 0);
// for (int i = 1; i <= num; i++)
// {
// for (int j = i; j <= num; j=j+i)
// {
// if (tempVec[j] == 0)
// tempVec[j] = 1;
// else
// tempVec[j] =0;
// }
// }
// for (int i = 1; i <=num; i++)
// {
// result+= tempVec[i];
// }
// cout<<result<<endl;
//}
//3.
//char A[50];
//char B[50];
//while (scanf_s("%s%s", A, B) !=EOF)
//{
string AA;
string BB;
while (cin>>AA&&cin>>BB)
{
// 1. sort
char A[100];
char B[100];
int Anum = AA.size(); int Bnum =BB.size();
int i = 0;
while (i< Anum)
A[i++] = AA[i];
i= 0;
while (i < Bnum)
B[i++] = BB[i];
qsort(A, Anum, sizeof(char), charComp);
qsort(B, Bnum, sizeof(char), charComp);
// 2. remove the same
int j = 0; i = 0;
int hashCharA[26] = {0};
int hashCharB[26] ={0};
while (i< Anum)
{
while (j < Bnum)
{
if (A[i] == B[j])
{
i++; j++;
}
else if (A[i] < B[j])
{
i++;
int index = (int)A[i]-'a';
hashCharA[index]++;
}
else
{
j++;
int index = (int)B[i]-'a';
hashCharB[index]++;
}
}
}
// sort the index num;
qsort(hashCharA, 26,sizeof(int), intComp);
qsort(hashCharB,26, sizeof(int), intComp);
// result
int result;
int reuslt1= 0; int result2 = 0;
for (int ii = 0; ii < 26; ii++)
{
reuslt1 += hashCharA[ii]*(26-ii) - hashCharB[ii]*(ii+1);
result2 += hashCharB[ii]*(26-ii) - hashCharA[ii]*(ii+1);
}
result = reuslt1>result2? reuslt1:result2;
cout<< result<<endl;
}
return 0;
}