显然组成两支礼炮比组成一支要优,我们就先贪心的组成两支的,然后再将剩下的组成一支的即可

#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
using namespace std;
const int INF=0x3f3f3f3f;
int read()
{
   int s=0,bj=0;
   char ch=getchar();
   while(ch<'0'||ch>'9')bj|=(ch=='-'),ch=getchar();
   while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
   return bj?-s:s;
}
void printnum(int x)
{
    if(x>9)printnum(x/10);
    putchar(x%10^48);
}
void print(int x,char ch)
{
    if(x<0){putchar('-');x=-x;}
    printnum(x);putchar(ch);
}
int n;
char ch[100000005];
int aha[26];
int main()
{
    n=read();
    scanf("%s",ch+1);
    for(int i=1;i<=n;++i)++aha[ch[i]-'a'];
    int num1=aha[10],num2=min(aha[8],min(aha[13],aha[6]));//num1'k'的个数,num2"ing"的个数 
    int cnt=min(num1,num2/2),ans=cnt*2;
    num1-=cnt;num2-=cnt*2;//先减掉组成两支的 
    if(num1&&num2)++ans;//再算组成一支的 
    print(ans,'\n');
    return 0;
}