
#include <bits/stdc++.h>
using namespace std;
// string ss;
#define int long long
string s;
//该方法通过动态规划,找到2023字串,而2023等于202加3,202等于20+2,20等于2+0;
int f2()
{
int dp[4]={0};
//dp[0]代表2的数量,dp[1]代表20的数量d[2]代表202的数量,dp[3]等于2023的数量,考察对动态规划的理解
for(int i=0;i<s.size();i++)
{
if(s[i]=='2')
{
//第一个二加加第二个二等于加上20字串的数量
dp[0]++;
dp[2]+=dp[1];
}
if(s[i]=='0') dp[1]+=dp[0];
if(s[i]=='3') dp[3]+=dp[2];
}
return dp[3];
}
int f1()
{
int cnt=0;
for(int i=0;i<s.size();i++)
{
if(s[i]!='2') continue;
for(int j=i+1;j<s.size();j++)
{
if(s[j]!='0') continue;
for(int k=j+1;k<s.size();k++)
{
if(s[k]!='2') continue;
for(int l=k+1;l<s.size();l++)
{
if(s[l]!='3') continue;
cnt++;
}
}
}
}
return cnt;
}
signed main()
{
// for(int i=0;i<=2023;i++)
// {
// s+=to_string(i);
// }
for(int i=1;i<=2023;i++)
{
string ss=to_string(i);
for(auto ch:ss)
{
if(ch=='2') s+='2';
if(ch=='0') s+='0';
if(ch=='3') s+='3';
}
}
// cout<<f2();
cout<<f1();
// int cont=0;
// // cout<<s;
// for(int i=0;i<s.size();i++)
// {
// if(s[i]!='2') continue;
// for(int j=i+1;j<s.size();j++)
// {
// if(s[j]!='0') continue;
// for(int k=j+1;k<s.size();k++)
// {
// if(s[k]!='2') continue;
// for(int l=k+1;l<s.size();l++)
// {
// if(s[l]!='3') continue;
// cont++;
// }
// }
// }
// }
// cout<<cont;
return 0;
}