#include "bits/stdc++.h"
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
typedef long long ll;
int n,ans,k,q,num[100005];
string s;
int main(){
int ok=0;
int x=0,y=0;
cin>>n>>s;
//num[i]统计s中[0,i]中0的个数
num[0]=(s[0]=='0');
for(int i=1;i<n;i++){
num[i]=num[i-1]+(s[i]=='0');
}
for(int i=0;i<n;i++){
//x统计当前0的个数,y统计当前1的个数
if(s[i]=='0')x++;
else y++;
//如果0多于1,1不少于0忽略
if(x>y){
//如果是第一次,记录位置k
if(!ok){
k=i;
x--;
y++;
ok++;
}
else if(ok==1){//如果是第二次,记录位置q
q=i;
x--;
y++;
ok++;
}
else {//如果是第三次,输出0结束
cout<<0;
return 0;
}
}
}
//ok为0说明没有找到一个需要变0为1的地方
if(ok==0)cout<<n*(n-1)/2;
//ok为1说明只有一个地方必须要变0为1
else if(ok==1){
int ans=0;
for(int i=0;i<=k;i++){//在[0,k]选一个0,另一个位置除了第一个位置前面的0都能选
if(s[i]=='0')ans+=n-num[i];
}
cout<<ans;
}
//两个地方
else {
int ans=0;
for(int i=0;i<=k;i++){//在[0,k]选一个0,另一个位置选[pos1+1,q]之间的0
if(s[i]=='0')ans+=num[q]-num[i];
}
cout<<ans;
}
return 0;
}