/*
二进制数 每位对应的 0 1 从低位到高位,0代表没有 1代表当前为有素数。
素数从 2 开始。
求0 1串 累加成素数的和
*/
#include <cstdio>
#include <cstring>
char str[160];
bool vis[2000];
int s[2000];
using namespace std;
void Prime()//筛出来
{
int i,j;
for(i=2;i<=3000;i++){
for(j=i+i;j<=3000;j+=i)
{
if(!vis[j])
{
vis[j] = true;
}
}
}
int k = 0;
for(i=1;i<=3000;i++){
if(vis[i]==false){
s[k++] = i;
}
}
}
int main()
{
while(scanf("%s",&str)!=EOF)
{
memset(vis,false,sizeof(vis));
Prime();
int i;
long long sum = 0;
int len = strlen(str);
for(i=1;i<=len;i++)
{
if(str[len-i]=='1')
{
sum += s[i];
}
}
printf("%lld\n",sum);
}
return 0;
}