#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
int openingRightDoor(int n,char* str)
{
int i,lnum[10]={0},rnum[10]={0},capslcnt[26]={0},capsrcnt[26]={0},rcnt[26]={0},lcnt[26]={0},cnt1=0,cnt2=0,cnt3=0;
int ans=0;
if(n % 2 != 0)
{
for(i=0;i<n;i++)
{
lnum[str[i]-'0']++;
rnum[str[i]-'0']++;
capslcnt[str[i]-'A']++;
{
// printf("entering\n");
lcnt[str[i]-'a']++;
}
rcnt[str[i]-'a']++;
capsrcnt[str[i]-'A']++;
}
for(i=0;i<26;i++)
{
// printf("for %c, capslcnt = %d , capsrcnt = %d, lcnt = %d, rcnt = %d\n",i+'a',capslcnt[i],capsrcnt[i],lcnt[i],rcnt[i]);
cnt1
+= abs(capslcnt
[i
]-capsrcnt
[i
]); cnt2
+= abs(lcnt
[i
]-rcnt
[i
]);}
for(i=0;i<10;i++)
{
cnt3
+= abs(lnum
[i
]-rnum
[i
]);}
//printf("%d",cnt1+cnt2+cnt3);
ans = cnt1+cnt2+cnt3;
}
else
{
for(i=0;i<n;i++)
{
{
//printf("here in no - %d\n",str[i]-'0');
lnum[str[i]-'0']++;
}
rnum[str[i]-'0']++;
capslcnt[str[i]-'A']++;
{
// printf("entering\n");
lcnt[str[i]-'a']++;
}
rcnt[str[i]-'a']++;
capsrcnt[str[i]-'A']++;
}
for(i=0;i<26;i++)
{
// printf("for %c, capslcnt = %d , capsrcnt = %d, lcnt = %d, rcnt = %d\n",i+'a',capslcnt[i],capsrcnt[i],lcnt[i],rcnt[i]);
cnt1
+= abs(capslcnt
[i
]-capsrcnt
[i
]); cnt2
+= abs(lcnt
[i
]-rcnt
[i
]);}
for(i=0;i<10;i++)
{
cnt3
+= abs(lnum
[i
]-rnum
[i
]);}
if(str[n/2-1] == str[n/2])
//printf("%d",cnt1+cnt2+cnt3);
ans = cnt1+cnt2+cnt3;
else
//printf("%d",cnt1+cnt2+cnt3+2);
ans = cnt1+cnt2+cnt3+2;
}
return ans;
}
int main() {
int output = 0;
int ip1;
char* ip2;
ip2
= (char *)malloc(512000 * sizeof(char)); output = openingRightDoor(ip1,ip2);
return 0;
}
I2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8YXNzZXJ0Lmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCiAgICBpbnQgb3BlbmluZ1JpZ2h0RG9vcihpbnQgbixjaGFyKiBzdHIpCiAgICB7CiAgICAJcHJpbnRmKCIlZCIsc2l6ZW9mKHN0cikpOwogICAgICAgIGludCBpLGxudW1bMTBdPXswfSxybnVtWzEwXT17MH0sY2Fwc2xjbnRbMjZdPXswfSxjYXBzcmNudFsyNl09ezB9LHJjbnRbMjZdPXswfSxsY250WzI2XT17MH0sY250MT0wLGNudDI9MCxjbnQzPTA7CiAgICAgICAgaW50IGFucz0wOwogICAgICAgIGlmKG4gJSAyICE9IDApCnsKZm9yKGk9MDtpPG47aSsrKQp7CiAgICBpZihpIDwgbi8yICYmIGlzZGlnaXQoc3RyW2ldKSkKICAgIGxudW1bc3RyW2ldLScwJ10rKzsKICAgIAogICAgaWYoaSA+IG4vMiAmJiBpc2RpZ2l0KHN0cltpXSkpCiAgICBybnVtW3N0cltpXS0nMCddKys7CiAgICAKICAgIGlmKGkgPCBuLzIgJiYgaXN1cHBlcihzdHJbaV0pKQogICAgY2Fwc2xjbnRbc3RyW2ldLSdBJ10rKzsKICAgIAogICAgaWYoaSA8IG4vMiAmJiBpc2xvd2VyKHN0cltpXSkpCiAgICB7CiAgICAgICAgCi8vICAgIHByaW50ZigiZW50ZXJpbmdcbiIpOwogICAgbGNudFtzdHJbaV0tJ2EnXSsrOwogICAgfQogICAgCiAgICBpZihpID4gbi8yICYmIGlzbG93ZXIoc3RyW2ldKSkKICAgIHJjbnRbc3RyW2ldLSdhJ10rKzsKICAgIAogICAgaWYoaSA+IG4vMiAmJiBpc3VwcGVyKHN0cltpXSkpCiAgICBjYXBzcmNudFtzdHJbaV0tJ0EnXSsrOwp9Cgpmb3IoaT0wO2k8MjY7aSsrKQp7Ci8vICAgIHByaW50ZigiZm9yICVjLCBjYXBzbGNudCA9ICVkICwgY2Fwc3JjbnQgPSAlZCwgbGNudCA9ICVkLCByY250ID0gJWRcbiIsaSsnYScsY2Fwc2xjbnRbaV0sY2Fwc3JjbnRbaV0sbGNudFtpXSxyY250W2ldKTsKICAgIGNudDEgKz0gYWJzKGNhcHNsY250W2ldLWNhcHNyY250W2ldKTsKICAgIGNudDIgKz0gYWJzKGxjbnRbaV0tcmNudFtpXSk7Cn0KZm9yKGk9MDtpPDEwO2krKykKewogICAgY250MyArPSBhYnMobG51bVtpXS1ybnVtW2ldKTsKfQovL3ByaW50ZigiJWQiLGNudDErY250MitjbnQzKTsKYW5zID0gY250MStjbnQyK2NudDM7Cn0KZWxzZQp7CiAgICBmb3IoaT0wO2k8bjtpKyspCnsKICAgIGlmKGkgPCBuLzItMSAmJiBpc2RpZ2l0KHN0cltpXSkpCiAgICB7CiAgICAgICAgCiAgICAvL3ByaW50ZigiaGVyZSBpbiBubyAtICVkXG4iLHN0cltpXS0nMCcpOwogICAgbG51bVtzdHJbaV0tJzAnXSsrOwogICAgfQogICAgCiAgICBpZihpID4gbi8yLTEgJiYgaXNkaWdpdChzdHJbaV0pKQogICAgcm51bVtzdHJbaV0tJzAnXSsrOwogICAgCiAgICBpZihpIDwgbi8yLTEgJiYgaXN1cHBlcihzdHJbaV0pKQogICAgY2Fwc2xjbnRbc3RyW2ldLSdBJ10rKzsKICAgIAogICAgaWYoaSA8IG4vMi0xICYmIGlzbG93ZXIoc3RyW2ldKSkKICAgIHsKICAgICAgICAKLy8gICAgcHJpbnRmKCJlbnRlcmluZ1xuIik7CiAgICBsY250W3N0cltpXS0nYSddKys7CiAgICB9CiAgICAKICAgIGlmKGkgPiBuLzIgJiYgaXNsb3dlcihzdHJbaV0pKQogICAgcmNudFtzdHJbaV0tJ2EnXSsrOwogICAgCiAgICBpZihpID4gbi8yICYmIGlzdXBwZXIoc3RyW2ldKSkKICAgIGNhcHNyY250W3N0cltpXS0nQSddKys7Cn0KCmZvcihpPTA7aTwyNjtpKyspCnsKLy8gICAgcHJpbnRmKCJmb3IgJWMsIGNhcHNsY250ID0gJWQgLCBjYXBzcmNudCA9ICVkLCBsY250ID0gJWQsIHJjbnQgPSAlZFxuIixpKydhJyxjYXBzbGNudFtpXSxjYXBzcmNudFtpXSxsY250W2ldLHJjbnRbaV0pOwogICAgY250MSArPSBhYnMoY2Fwc2xjbnRbaV0tY2Fwc3JjbnRbaV0pOwogICAgY250MiArPSBhYnMobGNudFtpXS1yY250W2ldKTsKfQpmb3IoaT0wO2k8MTA7aSsrKQp7CiAgICBjbnQzICs9IGFicyhsbnVtW2ldLXJudW1baV0pOwp9CgppZihzdHJbbi8yLTFdID09IHN0cltuLzJdKQovL3ByaW50ZigiJWQiLGNudDErY250MitjbnQzKTsKYW5zID0gY250MStjbnQyK2NudDM7CmVsc2UKLy9wcmludGYoIiVkIixjbnQxK2NudDIrY250MysyKTsKYW5zID0gY250MStjbnQyK2NudDMrMjsKfQpyZXR1cm4gYW5zOwogICAgfQoKCmludCBtYWluKCkgewogICAgaW50IG91dHB1dCA9IDA7CiAgICBpbnQgaXAxOwogICAgc2NhbmYoIiVkIiwgJmlwMSk7CiAgICBjaGFyKiBpcDI7CiAgICBpcDIgPSAoY2hhciAqKW1hbGxvYyg1MTIwMDAgKiBzaXplb2YoY2hhcikpOwogICAgc2NhbmYoIlxuJVteXG5dIixpcDIpOwogICAgb3V0cHV0ID0gb3BlbmluZ1JpZ2h0RG9vcihpcDEsaXAyKTsKICAgIHByaW50ZigiJWRcbiIsIG91dHB1dCk7CiAgICByZXR1cm4gMDsKfQ==