#include using namespace std; typedef long long ll; int to_num(char c) { switch(c) { case 'A': return 0; case 'C': return 1; case 'G': return 2; case 'T': return 3; } } int main() { string from, to; cin >> from >> to; multiset basesFrom[4]; multiset basesTo[4]; for(int i = 0; i < from.size(); i++) { if(from[i] != to[i]) { basesFrom[to_num(from[i])].insert(to_num(to[i])); basesTo[to_num(to[i])].insert(to_num(from[i])); } } ll counter = 0; for(int from = 0; from < 4; from++) { for (int to = 0; to < 4; to++) { if(from != to) { while(basesFrom[from].find(to) != basesFrom[from].end() && basesFrom[to].find(from) != basesFrom[to].end() ) { basesFrom[from].erase(basesFrom[from].find(to)); basesFrom[to].erase(basesFrom[to].find(from)); counter++; } } } } for(int from = 0; from < 4; from++) { for(int over = 0; over < 4; over++) { for (int to = 0; to < 4; to++) { if(from != over && over != to && from != to) { while(basesFrom[from].find(over) != basesFrom[from].end() && basesFrom[over].find(to) != basesFrom[over].end() && basesFrom[to].find(from) != basesFrom[to].end() ) { basesFrom[from].erase(basesFrom[from].find(over)); basesFrom[over].erase(basesFrom[over].find(to)); basesFrom[to].erase(basesFrom[to].find(from)); counter+= 2; } } } } } ll left = 0; for(int from = 0; from < 4; from++) { left += basesFrom[from].size(); } counter += 3*(left / 4); cout << counter << endl; }