#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <algorithm>
#include <queue>
#include <cstdio>
#include <fstream>
#include <unordered_map>
#include <map>
#include <iterator>
#include <iomanip>
#include <stack>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

#define TASK "payment"
#define X first
#define Y second
#define mp make_pair
#define inb push_back

int a[4];

int main()
{
	//freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
	string s;
	cin >> s;
	int i = 0;
	while (i < s.size())
	{
		while (s[i] > '9')
			++i;
		int sm = 0, sm1 = 0, sm2 = 0, sm3 = 0, x = 1;
		string s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm += s1[j] * x, x *= 10;
		if (s[i] != '.')
		{
			a[2] += sm;
			continue;
		}
		++i;
		int kl = 0;
		x = 1;
		s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i, ++kl;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm1 += s1[j] * x, x *= 10;
		if (s[i] != '.')
		{
			if (kl == 2)
			{
				a[2] += sm;
				a[3] += sm1;
			}
			else
			{
				a[1] += sm;
				a[2] += sm1;
			}
			continue;
		}
		kl = 0;
		++i;
		x = 1;
		s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i, ++kl;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm2 += s1[j] * x, x *= 10;
		if (s[i] != '.')
		{
			if (kl == 2)
			{
				a[1] += sm;
				a[2] += sm1;
				a[3] += sm2;
			}
			else
			{
				a[0] += sm;
				a[1] += sm1;
				a[2] += sm2;
			}
			continue;
		}
		++i;
		x = 1;
		s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm3 += s1[j] * x, x *= 10;
		a[0] += sm;
		a[1] += sm1;
		a[2] += sm2;
		a[3] += sm3;
	}
	if (a[0])
	{
		cout << a[0] << '.';
		printf("%03d.%03d.%02d", a[1], a[2], a[3]);
	}
	else if (a[1])
	{
		cout << a[1] << '.';
		printf("%03d.%02d", a[2], a[3]);
	}
	else if (a[2])
	{
		cout << a[2] << '.';
		printf("%02d", a[3]);
	}
	else if (a[3])
	{
		cout << 0 << '.';
		printf("%02d", a[3]);
	}
	else
		cout << 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <algorithm>
#include <queue>
#include <cstdio>
#include <fstream>
#include <unordered_map>
#include <map>
#include <iterator>
#include <iomanip>
#include <stack>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

#define TASK "payment"
#define X first
#define Y second
#define mp make_pair
#define inb push_back

int a[4];

int main()
{
	//freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
	string s;
	cin >> s;
	int i = 0;
	while (i < s.size())
	{
		while (s[i] > '9')
			++i;
		int sm = 0, sm1 = 0, sm2 = 0, sm3 = 0, x = 1;
		string s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm += s1[j] * x, x *= 10;
		if (s[i] != '.')
		{
			a[2] += sm;
			continue;
		}
		++i;
		int kl = 0;
		x = 1;
		s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i, ++kl;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm1 += s1[j] * x, x *= 10;
		if (s[i] != '.')
		{
			if (kl == 2)
			{
				a[2] += sm;
				a[3] += sm1;
			}
			else
			{
				a[1] += sm;
				a[2] += sm1;
			}
			continue;
		}
		kl = 0;
		++i;
		x = 1;
		s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i, ++kl;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm2 += s1[j] * x, x *= 10;
		if (s[i] != '.')
		{
			if (kl == 2)
			{
				a[1] += sm;
				a[2] += sm1;
				a[3] += sm2;
			}
			else
			{
				a[0] += sm;
				a[1] += sm1;
				a[2] += sm2;
			}
			continue;
		}
		++i;
		x = 1;
		s1 = "";
		while (s[i] <= '9' && s[i] >= '0')
			s1 += (s[i] - '0'), ++i;
		for (int j = s1.size() - 1; j >= 0; --j)
			sm3 += s1[j] * x, x *= 10;
		a[0] += sm;
		a[1] += sm1;
		a[2] += sm2;
		a[3] += sm3;
	}
	if (a[0])
	{
		cout << a[0];
		printf(".%03d.%03d", a[1], a[2]);
		if (a[3])
			printf(".%02d", a[3]);
	}
	else if (a[1])
	{
		cout << a[1] << '.';
		printf("%03d", a[2]);
		if (a[3])
			printf(".%02d", a[3]);
	}
	else if (a[2])
	{
		cout << a[2] << '.';
		if (a[3])
			printf("%02d", a[3]);
	}
	else if (a[3])
	{
		cout << 0 << '.';
		printf("%02d", a[3]);
	}
	else
		cout << 0;
}


#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=100000+5;
string tem,s;
int ans=0;
double qwe=0;
bool FLAG=0;
void run(){//计数
    bool youdian=0;
    if(tem[0]=='.') return;
    bool kind=0;
    double num=0,tnum=0;
    for(int i=0;i!=tem.length();++i){
        if(tem[i]=='.'){
            if(tnum>=1000.0||tem[i+2]=='.'||tem[i+1]=='.'||tem[i+3]=='.'||i==tem.length()-1) return;
            else{
                num*=1000.0;
                num+=tnum;
                tnum=0;
            }
            youdian=1;
        }else {
            tnum*=10.0;
            tnum+=tem[i]-'0';
        }
    }
    if(youdian==0) ans+=tnum;
    if(tnum<10.0&&tem[tem.length()-2]=='.') return;
    if(tnum<10.0&&tnum>0&&tem[tem.length()-2]=='0'&&tem[tem.length()-3]=='.') tnum/=100.0;
    else if(tnum<100.0&&tem[tem.length()-3]=='.')tnum/=100.0;
    else if(tem[tem.length()-4]=='.') num*=1000.0;
    else return;
    if(tnum<1){
        qwe+=tnum;
        FLAG=1;
    }
    else num+=tnum;
    //cout<<"num: "<<num<<endl;
    ans=ans+num;
    //cout<<"ans :"<<ans<<endl;
}
int main(){
    cin>>s;
    bool flag=0;
    for(int i=0;i!=s.length();++i){
        if(islower(s[i])){
            if(!flag){//前边不是字母
                //cout<<tem<<endl;
                run();
                //cout<<"一组"<<endl;
                tem="";
            }
            flag=1;
            continue;
        }else flag=0;
        tem+=s[i];
    }
    //cout<<tem<<endl;
    run();
    //cout<<ans<<" "<<qwe<<endl;
    //cout<<endl;
    string p="",print="";
    int qqwe=0;
    if(FLAG){
        qqwe=qwe*100;
        if(qqwe>=100) ans+=(qqwe/100);
        qqwe%=100;
    }
    while(ans){
        p+=(char)((int)ans%10+'0');
        ans/=10;
    }
   // cout<<p<<endl;
    int cnt=0;
    for(int i=0;i<p.length();++i){
        if(cnt==3&&i!=p.length()){
            print+='.';
            cnt=0;
        }else cnt++;
        print+=p[i];
    }
    reverse(print.begin(),print.end());
    cout<<print;
    if(print=="") cout<<0;
    if(FLAG){

        if(qqwe>=10)cout<<"."<<qqwe<<endl;
        else cout<<".0"<<qqwe<<endl;
    }
    return 0;
}
//a100.000b0.01


#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=100000+5;
string tem,s;
int ans=0;
double qwe=0;
bool FLAG=0;
void run(){//计数
    bool youdian=0;
    if(tem[0]=='.') return;
    bool kind=0;
    double num=0,tnum=0;
    for(int i=0;i!=tem.length();++i){
        if(tem[i]=='.'){
            if(tnum>=1000.0||tem[i+2]=='.'||tem[i+1]=='.'||tem[i+3]=='.'||i==tem.length()-1) return;
            else{
                num*=1000.0;
                num+=tnum;
                tnum=0;
            }
            youdian=1;
        }else {
            tnum*=10.0;
            tnum+=tem[i]-'0';
        }
    }
    if(youdian==0) ans+=tnum;
    if(tnum<10.0&&tem[tem.length()-2]=='.') return;
    if(tnum<10.0&&tnum>0&&tem[tem.length()-2]=='0'&&tem[tem.length()-3]=='.') tnum/=100.0;
    else if(tnum<100.0&&tem[tem.length()-3]=='.')tnum/=100.0;
    else if(tem[tem.length()-4]=='.') num*=1000.0;
    else return;
    if(tnum<1){
        qwe+=tnum;
        FLAG=1;
    }
    else num+=tnum;
    //cout<<"num: "<<num<<endl;
    ans=ans+num;
    //cout<<"ans :"<<ans<<endl;
}
int main(){
    cin>>s;
    bool flag=0;
    for(int i=0;i!=s.length();++i){
        if(islower(s[i])){
            if(!flag){//前边不是字母
                //cout<<tem<<endl;
                run();
                //cout<<"一组"<<endl;
                tem="";
            }
            flag=1;
            continue;
        }else flag=0;
        tem+=s[i];
    }
    //cout<<tem<<endl;
    run();
    //cout<<ans<<" "<<qwe<<endl;
    //cout<<endl;
    string p="",print="";
    int qqwe=0;
    if(FLAG){
        qqwe=qwe*100;
        if(qqwe>=100) ans+=(qqwe/100);
        qqwe%=100;
    }
    while(ans){
        p+=(char)((int)ans%10+'0');
        ans/=10;
    }
   // cout<<p<<endl;
    int cnt=0;
    for(int i=0;i<p.length();++i){
        if(cnt==3&&i!=p.length()){
            print+='.';
            cnt=0;
        }else cnt++;
        print+=p[i];
    }
    reverse(print.begin(),print.end());
    cout<<print;
    if(print=="") cout<<0;
    if(FLAG&&qqwe!=0){
        if(qqwe>=10)cout<<"."<<qqwe<<endl;
        else cout<<".0"<<qqwe<<endl;
    }
    return 0;
}
//a100.000b0.01


#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=100000+5;
string tem,s;
int ans=0;
int qwe=0;
bool FLAG=0;
void run(){//计数
    bool youdian=0;
    if(tem[0]=='.') return;
    bool kind=0,temflag=0;
    double num=0,tnum=0;
    for(int i=0;i!=tem.length();++i){
        if(tem[i]=='.'){
            if(tnum>=1000||tem[i+2]=='.'||tem[i+1]=='.'||tem[i+3]=='.'||i==tem.length()-1) return;
            else{
                num*=1000;
                num+=tnum;
                tnum=0;
            }
            youdian=1;
        }else {
            tnum*=10.0;
            tnum+=tem[i]-'0';
        }
    }
    if(youdian==0) ans+=tnum;
    if(tnum<10&&tem[tem.length()-2]=='.') return;
    if(tnum<10&&tnum>0&&tem[tem.length()-2]=='0'&&tem[tem.length()-3]=='.') temflag=1;
    else if(tnum<100&&tem[tem.length()-3]=='.')temflag=1;
    else if(tem[tem.length()-4]=='.') num*=1000;
    else return;
    if(temflag){
        qwe+=tnum;
        FLAG=1;
    }
    else num+=tnum;
    //cout<<"num: "<<num<<endl;
    ans=ans+num;
    //cout<<"ans :"<<ans<<endl;
}
int main(){
    cin>>s;
    bool flag=0;
    for(int i=0;i!=s.length();++i){
        if(islower(s[i])){
            if(!flag){//前边不是字母
                //cout<<tem<<endl;
                run();
                //cout<<"一组"<<endl;
                tem="";
            }
            flag=1;
            continue;
        }else flag=0;
        tem+=s[i];
    }
    //cout<<tem<<endl;
    run();

    string p="",print="";
    int qqwe=qwe;
    if(FLAG){
        if(qqwe>=100) ans+=(qqwe/100);
        qqwe%=100;
    }
    //cout<<ans<<" "<<qwe<<endl;
    //cout<<endl;
    while(ans){
        p+=(char)((int)ans%10+'0');
        ans/=10;
    }
   // cout<<p<<endl;
    int cnt=0;
    for(int i=0;i<p.length();++i){
        if(cnt==3&&i!=p.length()){
            print+='.';
            cnt=1;
        }else cnt++;
        print+=p[i];
    }
    reverse(print.begin(),print.end());
    cout<<print;
    if(print=="") cout<<0;
    if(FLAG&&qqwe!=0){
        if(qqwe>=10)cout<<"."<<qqwe<<endl;
        else cout<<".0"<<qqwe<<endl;
    }
    return 0;
}
//a100.000b0.01


#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=100000+5;
string tem,s;
int ans=0;
double qwe=0;
bool FLAG=0;
void run(){//计数
    bool youdian=0;
    if(tem[0]=='.') return;
    bool kind=0;
    double num=0,tnum=0;
    for(int i=0;i!=tem.length();++i){
        if(tem[i]=='.'){
            if(tnum>=1000.0||tem[i+2]=='.'||tem[i+1]=='.'||tem[i+3]=='.'||i==tem.length()-1) return;
            else{
                num*=1000.0;
                num+=tnum;
                tnum=0;
            }
            youdian=1;
        }else {
            tnum*=10.0;
            tnum+=tem[i]-'0';
        }
    }
    if(youdian==0) ans+=tnum;
    if(tnum<10.0&&tem[tem.length()-2]=='.') return;
    if(tnum<10.0&&tnum>0&&tem[tem.length()-2]=='0'&&tem[tem.length()-3]=='.') tnum/=100.0;
    else if(tnum<100.0&&tem[tem.length()-3]=='.')tnum/=100.0;
    else if(tem[tem.length()-4]=='.') num*=1000.0;
    else return;
    if(tnum<1){
        qwe+=tnum;
        FLAG=1;
    }
    else num+=tnum;
    //cout<<"num: "<<num<<endl;
    ans=ans+num;
    //cout<<"ans :"<<ans<<endl;
}
int main(){
    cin>>s;
    bool flag=0;
    for(int i=0;i!=s.length();++i){
        if(islower(s[i])){
            if(!flag){//前边不是字母
                //cout<<tem<<endl;
                run();
                //cout<<"一组"<<endl;
                tem="";
            }
            flag=1;
            continue;
        }else flag=0;
        tem+=s[i];
    }
    //cout<<tem<<endl;
    run();
    //cout<<ans<<" "<<qwe<<endl;
    //cout<<endl;
    string p="",print="";
    int qqwe=0;
    if(FLAG){
        qqwe=qwe*100;
        if(qqwe>=100) ans+=(qqwe/100);
        qqwe%=100;
    }
    while(ans){
        p+=(char)((int)ans%10+'0');
        ans/=10;
    }
   // cout<<p<<endl;
    int cnt=0;
    for(int i=0;i<p.length();++i){
        if(cnt==3&&i!=p.length()){
            print+='.';
            cnt=1;
        }else cnt++;
        print+=p[i];
    }
    reverse(print.begin(),print.end());
    cout<<print;
    if(print=="") cout<<0;
    if(FLAG&&qqwe!=0){
        if(qqwe>=10)cout<<"."<<qqwe<<endl;
        else cout<<".0"<<qqwe<<endl;
    }
    return 0;
}
//a100.000b0.01


#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#define MX 200000
#define M 1e18+7
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define sz(a) int((a).size())
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define LL long long int
#define ull unsigned long long int
#define LD long double
#define f first
#define s second
#define SQRT 316
#define MAXN 1000
#define MAXM 1000
#define pii pair<int,int>
#define pll pair<LL,LL>
using namespace std;

int main(){
     ios::sync_with_stdio(false);
     string xx;
     cin>>xx;
     int i=0;
     long long fi=0,fd=0;
     while(i<xx.length())
     {
         int j;
         if(xx[i]>='a' && xx[i]<='z')i++;
         else if(xx[i]>='0' && xx[i]<='9')
         {
        for(j=i;j<xx.length();j++)if(xx[j]>='a' && xx[j]<='z')break;
         string zz="";
         for(int t=i;t<j;t++)
         {
                zz+=xx[t];
         }
         i=j;
         ///DEBUG(zz);
        if(zz.length()-3>=0 && zz[zz.length()-3]=='.')
        {
            string yy="";
            for(int l=0;l<zz.length()-3;l++)
            {
                    if(zz[l]!='.')yy+=zz[l];
            }
            ///DEBUG(yy);
            int ty=atoi(yy.c_str());  ///c_str() is used to convert a string to const char*...
            ///DEBUG(ty);
            fi+=ty;
            ///DEBUG(fi);
            yy="";
            yy+=zz[zz.length()-2],yy+=zz[zz.length()-1];
            ty=atoi(yy.c_str());
            fd+=ty;
        }
        else
        {
                string uu="";
                for(int r=0;r<zz.length();r++)if(zz[r]!='.')uu+=zz[r];
               /// DEBUG(uu);
                int tu=atoi(uu.c_str());
               /// DEBUG(tu);
                fi+=tu;
              ///  DEBUG(fi);
        }
     }
     }
     fi+=fd/100;
     stringstream ss;
     ss<<fi;
     string cc=ss.str();
     int k=0;
     string fa="";
     for(int i=cc.length()-1;i>=0;i--)
     {
         fa+=cc[i];
         k++;
         if(k==3)
         {
             fa+='.';
             k=0;
         }
     }
     reverse(fa.begin(),fa.end());
     ///DEBUG(fi);
    /// DEBUG(fd);

     cout<<fa;
     if(fd>10)cout<<"."<<fd<<'\n';
     else if(fd!=0)cout<<".0"<<fd<<'\n';
     return 0;
}


#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#define MX 200000
#define M 1e18+7
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define sz(a) int((a).size())
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define LL long long int
#define ull unsigned long long int
#define LD long double
#define f first
#define s second
#define SQRT 316
#define MAXN 1000
#define MAXM 1000
#define pii pair<int,int>
#define pll pair<LL,LL>
using namespace std;
int main(){
     ios::sync_with_stdio(false);
     string xx;
     cin>>xx;
     int i=0;
     long long fi=0,fd=0;
     while(i<xx.length())
     {
         int j;
         if(xx[i]>='a' && xx[i]<='z')i++;
         else if(xx[i]>='0' && xx[i]<='9')
         {
        for(j=i;j<xx.length();j++)if(xx[j]>='a' && xx[j]<='z')break;
         string zz="";
         for(int t=i;t<j;t++)
         {
                zz+=xx[t];
         }
         i=j;
         ///DEBUG(zz);
        if(zz.length()-3>=0 && zz[zz.length()-3]=='.')
        {
            string yy="";
            for(int l=0;l<zz.length()-3;l++)
            {
                    if(zz[l]!='.')yy+=zz[l];
            }
            ///DEBUG(yy);
            int ty=atoi(yy.c_str());  ///c_str() is used to convert a string to const char*...
            ///DEBUG(ty);
            fi+=ty;
            ///DEBUG(fi);
            yy="";
            yy+=zz[zz.length()-2],yy+=zz[zz.length()-1];
            ty=atoi(yy.c_str());
            fd+=ty;
        }
        else
        {
                string uu="";
                for(int r=0;r<zz.length();r++)if(zz[r]!='.')uu+=zz[r];
               /// DEBUG(uu);
                int tu=atoi(uu.c_str());
               /// DEBUG(tu);
                fi+=tu;
              ///  DEBUG(fi);
        }
     }
     }
     fi+=fd/100;
     fd=fd%100;
     stringstream ss;
     ss<<fi;
     string cc=ss.str();
     int k=0;
     string fa="";
      i=cc.length()-1;
     while(i>=0)
     {
         if(k==3)
         {
             fa+='.';
             k=0;
         }
         else
         {
            fa+=cc[i];
            k++;
            i--;
         }
     }
     reverse(fa.begin(),fa.end());
     ///DEBUG(fi);
    /// DEBUG(fd);

     cout<<fa;
     if(fd>=10)cout<<"."<<fd<<'\n';
     else if(fd>0 && fd<=9)cout<<".0"<<fd<<'\n';

return 0;
}


#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#define MX 200000
#define M 1e18+7
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define sz(a) int((a).size())
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define LL long long int
#define ull unsigned long long int
#define LD long double
#define f first
#define s second
#define SQRT 316
#define MAXN 1000
#define MAXM 1000
#define pii pair<int,int>
#define pll pair<LL,LL>
using namespace std;
int main(){
     ios::sync_with_stdio(false);
     string xx;
     cin>>xx;
     int i=0;
     long long fi=0,fd=0;
     while(i<xx.length())
     {
         int j;
         if(xx[i]>='a' && xx[i]<='z')i++;
         else if(xx[i]>='0' && xx[i]<='9')
         {
        for(j=i;j<xx.length();j++)if(xx[j]>='a' && xx[j]<='z')break;
         string zz="";
         for(int t=i;t<j;t++)
         {
                zz+=xx[t];
         }
         i=j;
         ///DEBUG(zz);
        if(zz.length()-3>=0 && zz[zz.length()-3]=='.')
        {
            string yy="";
            for(int l=0;l<zz.length()-3;l++)
            {
                    if(zz[l]!='.')yy+=zz[l];
            }
            ///DEBUG(yy);
            int ty=atoi(yy.c_str());  ///c_str() is used to convert a string to const char*...
            ///DEBUG(ty);
            fi+=ty;
            ///DEBUG(fi);
            yy="";
            yy+=zz[zz.length()-2],yy+=zz[zz.length()-1];
            ty=atoi(yy.c_str());
            fd+=ty;
        }
        else
        {
                string uu="";
                for(int r=0;r<zz.length();r++)if(zz[r]!='.')uu+=zz[r];
               /// DEBUG(uu);
                int tu=atoi(uu.c_str());
               /// DEBUG(tu);
                fi+=tu;
              ///  DEBUG(fi);
        }
     }
     }
     fi+=fd/100;
     fd=fd%100;
     stringstream ss;
     ss<<fi;
     string cc=ss.str();
     int k=0;
     string fa="";
      i=cc.length()-1;
     while(i>=0)
     {
         if(k==3)
         {
             fa+='.';
             k=0;
         }
         else
         {
            fa+=cc[i];
            k++;
            i--;
         }
     }
     reverse(fa.begin(),fa.end());
     ///DEBUG(fi);
    /// DEBUG(fd);

     cout<<fa;
     if(fd>10)cout<<"."<<fd<<'\n';
     else if(fd!=0)cout<<".0"<<fd<<'\n';

return 0;
}


#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#define MX 200000
#define M 1e18+7
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define sz(a) int((a).size())
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define LL long long int
#define ull unsigned long long int
#define LD long double
#define f first
#define s second
#define SQRT 316
#define MAXN 1000
#define MAXM 1000
#define pii pair<int,int>
#define pll pair<LL,LL>
using namespace std;
int main(){
     ios::sync_with_stdio(false);
     string xx;
     cin>>xx;
     int i=0;
     long long fi=0,fd=0;
     while(i<xx.length())
     {
         int j;
         if(xx[i]>='a' && xx[i]<='z')i++;
         else if(xx[i]>='0' && xx[i]<='9')
         {
        for(j=i;j<xx.length();j++)if(xx[j]>='a' && xx[j]<='z')break;
         string zz="";
         for(int t=i;t<j;t++)
         {
                zz+=xx[t];
         }
         i=j;
         ///DEBUG(zz);
        if(zz.length()-3>=0 && zz[zz.length()-3]=='.')
        {
            string yy="";
            for(int l=0;l<zz.length()-3;l++)
            {
                    if(zz[l]!='.')yy+=zz[l];
            }
            ///DEBUG(yy);
            int ty=atoi(yy.c_str());  ///c_str() is used to convert a string to const char*...
            ///DEBUG(ty);
            fi+=ty;
            ///DEBUG(fi);
            yy="";
            yy+=zz[zz.length()-2],yy+=zz[zz.length()-1];
            ty=atoi(yy.c_str());
            fd+=ty;
        }
        else
        {
                string uu="";
                for(int r=0;r<zz.length();r++)if(zz[r]!='.')uu+=zz[r];
               /// DEBUG(uu);
                int tu=atoi(uu.c_str());
               /// DEBUG(tu);
                fi+=tu;
              ///  DEBUG(fi);
        }
     }
     }
     fi+=fd/100;
     stringstream ss;
     ss<<fi;
     string cc=ss.str();
     int k=0;
     string fa="";
     for(int i=cc.length()-1;i>=0;i--)
     {
         fa+=cc[i];
         k++;
         if(k==3)
         {
             fa+='.';
             k=0;
         }
     }
     reverse(fa.begin(),fa.end());
     ///DEBUG(fi);
    /// DEBUG(fd);

     if(fd>10)cout<<fa<<"."<<fd<<'\n';
     else if(fd>0 && fd<=9)cout<<fa<<".0"<<fd<<'\n';
     return 0;
}


#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#define MX 200000
#define M 1e18+7
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define sz(a) int((a).size())
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define LL long long int
#define ull unsigned long long int
#define LD long double
#define f first
#define s second
#define SQRT 316
#define MAXN 1000
#define MAXM 1000
#define pii pair<int,int>
#define pll pair<LL,LL>
using namespace std;

int main(){
     ios::sync_with_stdio(false);
     string xx;
     cin>>xx;
     int i=0;
     long long fi=0,fd=0;
     while(i<xx.length())
     {
         int j;
         if(xx[i]>='a' && xx[i]<='z')i++;
         else if(xx[i]>='0' && xx[i]<='9')
         {
        for(j=i;j<xx.length();j++)if(xx[j]>='a' && xx[j]<='z')break;
         string zz="";
         for(int t=i;t<j;t++)
         {
                zz+=xx[t];
         }
         i=j;
         ///DEBUG(zz);
        if(zz.length()-3>=0 && zz[zz.length()-3]=='.')
        {
            string yy="";
            for(int l=0;l<zz.length()-3;l++)
            {
                    if(zz[l]!='.')yy+=zz[l];
            }
            ///DEBUG(yy);
            int ty=atoi(yy.c_str());  ///c_str() is used to convert a string to const char*...
            ///DEBUG(ty);
            fi+=ty;
            ///DEBUG(fi);
            yy="";
            yy+=zz[zz.length()-2],yy+=zz[zz.length()-1];
            ty=atoi(yy.c_str());
            fd+=ty;
        }
        else
        {
                string uu="";
                for(int r=0;r<zz.length();r++)if(zz[r]!='.')uu+=zz[r];
               /// DEBUG(uu);
                int tu=atoi(uu.c_str());
               /// DEBUG(tu);
                fi+=tu;
              ///  DEBUG(fi);
        }
     }
     }
     fi+=fd/100;
     fd=fd%100;
     stringstream ss;
     ss<<fi;
     string cc=ss.str();
     int k=0;
     string fa="";
     for(int i=cc.length()-1;i>=0;i--)
     {
         fa+=cc[i];
         k++;
         if(k==3)
         {
             fa+='.';
             k=0;
         }
     }
     reverse(fa.begin(),fa.end());
     ///DEBUG(fi);
    /// DEBUG(fd);

     cout<<fa;
     if(fd>10)cout<<"."<<fd<<'\n';
     else if(fd!=0)cout<<".0"<<fd<<'\n';
     return 0;
}


#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#define MX 200000
#define M 1e18+7
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define sz(a) int((a).size())
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define LL long long int
#define ull unsigned long long int
#define LD long double
#define f first
#define s second
#define SQRT 316
#define MAXN 1000
#define MAXM 1000
#define pii pair<int,int>
#define pll pair<LL,LL>
using namespace std;
int main(){
     ios::sync_with_stdio(false);
     string xx;
     cin>>xx;
     int i=0;
     long long fi=0,fd=0;
     while(i<xx.length())
     {
         int j;
         if(xx[i]>='a' && xx[i]<='z')i++;
         else if(xx[i]>='0' && xx[i]<='9')
         {
        for(j=i;j<xx.length();j++)if(xx[j]>='a' && xx[j]<='z')break;
         string zz="";
         for(int t=i;t<j;t++)
         {
                zz+=xx[t];
         }
         i=j;
         ///DEBUG(zz);
        if(zz.length()-3>=0 && zz[zz.length()-3]=='.')
        {
            string yy="";
            for(int l=0;l<zz.length()-3;l++)
            {
                    if(zz[l]!='.')yy+=zz[l];
            }
            ///DEBUG(yy);
            int ty=atoi(yy.c_str());  ///c_str() is used to convert a string to const char*...
            ///DEBUG(ty);
            fi+=ty;
            ///DEBUG(fi);
            yy="";
            yy+=zz[zz.length()-2],yy+=zz[zz.length()-1];
            ty=atoi(yy.c_str());
            fd+=ty;
        }
        else
        {
                string uu="";
                for(int r=0;r<zz.length();r++)if(zz[r]!='.')uu+=zz[r];
               /// DEBUG(uu);
                int tu=atoi(uu.c_str());
               /// DEBUG(tu);
                fi+=tu;
              ///  DEBUG(fi);
        }
     }
     }
     fi+=fd/100;
     stringstream ss;
     ss<<fi;
     string cc=ss.str();
     int k=0;
     string fa="";
     for(int i=cc.length()-1;i>=0;i--)
     {
         fa+=cc[i];
         k++;
         if(k==3)
         {
             fa+='.';
             k=0;
         }
     }
     reverse(fa.begin(),fa.end());
     ///DEBUG(fi);
    /// DEBUG(fd);

     if(fd>10)cout<<fa<<"."<<fd<<'\n';
     else cout<<fa<<".0"<<fd<<'\n';
     return 0;
}


#include <bits/stdc++.h>

using namespace std;

int power(int k)
{
    int ans = 1;
    for(int i = 1; i <= k; i++)
    {
        ans *= 10;
    }
    return ans;
}

int main()
{
    string s;
    cin >> s;
    double val = 0;
    for(int i = s.size() - 1; i >= 1; i--)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(i - 2 >= 0)
            {
                if(s[i - 2] == '.')
                {
                    val += (s[i - 1] - '0') * 0.1 + (s[i] - '0') * 0.01;
                    i = i - 2;
                }
            }
            int k = 0;
            while(s[i] >= '0' && s[i] <= '9' || s[i] =='.')
            {
                if(s[i] != '.')
                {
                    val += (s[i] - '0') * power(k);
                    k++;
                }
                i--;
            }
        }
    }
    if(val < 1000)
    {
        cout << val;
        return 0;
    }
    deque < double > ans;
    if(val - int(val))
    {
        ans.push_front((val - int(val)) * 100);
    }
    int v = int(val);
    while(v > 0)
    {
        ans.push_front(v % 1000);
        v /= 1000;
    }
    cout << ans[0];
    for(int i = 1; i < ans.size(); i++)
    {
        cout << ".";
        if(ans[i] < 100)cout << 0;
        if(ans[i] < 10)cout << 0;
        cout << ans[i];
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int power(int k)
{
    int ans = 1;
    for(int i = 1; i <= k; i++)
    {
        ans *= 10;
    }
    return ans;
}

int main()
{
    string s;
    cin >> s;
    double val = 0;
    for(int i = s.size() - 1; i >= 1; i--)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(i - 2 >= 0)
            {
                if(s[i - 2] == '.')
                {
                    val += (s[i - 1] - '0') * 0.1 + (s[i] - '0') * 0.01;
                    i = i - 2;
                }
            }
            int k = 0;
            while(s[i] >= '0' && s[i] <= '9' || s[i] =='.')
            {
                if(s[i] != '.')
                {
                    val += (s[i] - '0') * power(k);
                    k++;
                }
                i--;
            }
        }
    }
    if(val < 1000)
    {
        cout << val;
        return 0;
    }
    deque < double > ans;
    if(val - int(val))
    {
        ans.push_front((val - int(val)) * 100);
    }
    int v = int(val);
    while(v > 0)
    {
        ans.push_front(v % 1000);
        v /= 1000;
    }
    cout << ans[0];
    for(int i = 1; i < ans.size(); i++)
    {
        cout << "." << ans[i];
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int power(int k)
{
    int ans = 1;
    for(int i = 1; i <= k; i++)
    {
        ans *= 10;
    }
    return ans;
}

int main()
{
    string s;
    cin >> s;
    double val = 0;
    for(int i = s.size() - 1; i >= 1; i--)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(i - 2 >= 0)
            {
                if(s[i - 2] == '.')
                {
                    val += (s[i - 1] - '0') * 0.1 + (s[i] - '0') * 0.01;
                    i = i - 2;
                }
            }
            int k = 0;
            while(s[i] >= '0' && s[i] <= '9' || s[i] =='.')
            {
                if(s[i] != '.')
                {
                    val += (s[i] - '0') * power(k);
                    k++;
                }
                i--;
            }
        }
    }
    if(val < 1000)
    {
        cout << val;
        return 0;
    }
    deque < double > ans;
    double drob = 0;
    if(val - int(val))
    {
        drob = (val - int(val)) * 100;
    }
    int v = int(val);
    while(v > 0)
    {
        ans.push_front(v % 1000);
        v /= 1000;
    }
    cout << ans[0];
    for(int i = 1; i < ans.size(); i++)
    {
        cout << ".";
        if(ans[i] < 100)cout << 0;
        if(ans[i] < 10)cout << 0;
        cout << ans[i];
    }
    if(drob)
    {
        cout << ".";
        if(drob < 0)cout << 0;
        cout << drob;
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int power(int k)
{
    int ans = 1;
    for(int i = 1; i <= k; i++)
    {
        ans *= 10;
    }
    return ans;
}

int main()
{
    cout.precision(3);
    string s;
    cin >> s;
    int val = 0;
    int drob = 0;
    for(int i = s.size() - 1; i >= 1; i--)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(i - 2 >= 0)
            {
                if(s[i - 2] == '.')
                {
                    drob += (s[i - 1] - '0') * 10 + s[i] - '0';
                    if(drob >= 100)
                    {
                        val++;
                        drob -=100;
                    }
                    i = i - 2;
                }
            }
            int k = 0;
            while(s[i] >= '0' && s[i] <= '9' || s[i] =='.')
            {
                if(s[i] != '.')
                {
                    val += (s[i] - '0') * power(k);
                    k++;
                }
                i--;
            }
        }
    }
    if(val < 1000)
    {
        cout << val;
        if(drob)
        {
            cout << ".";
            if(drob < 10)cout << 0;
            cout << drob;
        }
        return 0;
    }
    deque < long long > ans;
    int v = val;
    while(v > 0)
    {
        ans.push_front(v % 1000);
        v /= 1000;
    }
    cout << ans[0];
    for(int i = 1; i < ans.size(); i++)
    {
        cout << ".";
        if(ans[i] < 100)cout << 0;
        if(ans[i] < 10)cout << 0;
        cout << ans[i];
    }
    if(drob)
    {
        cout << ".";
        if(drob < 10)cout << 0;
        cout << drob;
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int power(int k)
{
    int ans = 1;
    for(int i = 1; i <= k; i++)
    {
        ans *= 10;
    }
    return ans;
}

int main()
{
    string s;
    cin >> s;
    double val = 0;
    for(int i = s.size() - 1; i >= 1; i--)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(i - 2 >= 0)
            {
                if(s[i - 2] == '.')
                {
                    val += (s[i - 1] - '0') * 0.1 + (s[i] - '0') * 0.01;
                    i = i - 2;
                }
            }
            int k = 0;
            while(s[i] >= '0' && s[i] <= '9' || s[i] =='.')
            {
                if(s[i] != '.')
                {
                    val += (s[i] - '0') * power(k);
                    k++;
                }
                i--;
            }
        }
    }
    if(val < 1000)
    {
        cout << val;
        return 0;
    }
    deque < long long > ans;
    double drob = 0;
    if(val - int(val))
    {
        drob = (val - int(val)) * 100;
    }
    int v = int(val);
    while(v > 0)
    {
        ans.push_front(v % 1000);
        v /= 1000;
    }
    cout << ans[0];
    for(int i = 1; i < ans.size(); i++)
    {
        cout << ".";
        if(ans[i] < 100)cout << 0;
        if(ans[i] < 10)cout << 0;
        cout << ans[i];
    }
    if(drob)
    {
        cout << ".";
        if(drob < 10)cout << 0;
        cout << drob;
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int power(int k)
{
    int ans = 1;
    for(int i = 1; i <= k; i++)
    {
        ans *= 10;
    }
    return ans;
}

int main()
{
    cout.precision(2);
    string s;
    cin >> s;
    double val = 0;
    for(int i = s.size() - 1; i >= 1; i--)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(i - 2 >= 0)
            {
                if(s[i - 2] == '.')
                {
                    val += (s[i - 1] - '0') * 0.1 + (s[i] - '0') * 0.01;
                    i = i - 2;
                }
            }
            int k = 0;
            while(s[i] >= '0' && s[i] <= '9' || s[i] =='.')
            {
                if(s[i] != '.')
                {
                    val += (s[i] - '0') * power(k);
                    k++;
                }
                i--;
            }
        }
    }
    if(val < 1000)
    {
        cout << val;
        return 0;
    }
    deque < long long > ans;
    double drob = 0;
    if(val - int(val))
    {
        drob = (val - int(val)) * 100;
    }
    int v = int(val);
    while(v > 0)
    {
        ans.push_front(v % 1000);
        v /= 1000;
    }
    cout << ans[0];
    for(int i = 1; i < ans.size(); i++)
    {
        cout << ".";
        if(ans[i] < 100)cout << 0;
        if(ans[i] < 10)cout << 0;
        cout << ans[i];
    }
    if(drob)
    {
        cout << ".";
        if(drob < 10)cout << 0;
        cout << drob;
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int power(int k)
{
    int ans = 1;
    for(int i = 1; i <= k; i++)
    {
        ans *= 10;
    }
    return ans;
}

int main()
{
    cout.precision(3);
    string s;
    cin >> s;
    double val = 0;
    for(int i = s.size() - 1; i >= 1; i--)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(i - 2 >= 0)
            {
                if(s[i - 2] == '.')
                {
                    val += (s[i - 1] - '0') * 0.1 + (s[i] - '0') * 0.01;
                    i = i - 2;
                }
            }
            int k = 0;
            while(s[i] >= '0' && s[i] <= '9' || s[i] =='.')
            {
                if(s[i] != '.')
                {
                    val += (s[i] - '0') * power(k);
                    k++;
                }
                i--;
            }
        }
    }
    if(val < 1000)
    {
        cout << val;
        return 0;
    }
    deque < long long > ans;
    double drob = 0;
    if(val - int(val))
    {
        drob = (val - int(val)) * 100;
    }
    int v = int(val);
    while(v > 0)
    {
        ans.push_front(v % 1000);
        v /= 1000;
    }
    cout << ans[0];
    for(int i = 1; i < ans.size(); i++)
    {
        cout << ".";
        if(ans[i] < 100)cout << 0;
        if(ans[i] < 10)cout << 0;
        cout << ans[i];
    }
    if(drob)
    {
        cout << ".";
        if(drob < 10)cout << 0;
        cout << drob;
    }
    return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <map>
#include <algorithm>
#include <queue>
#include <cstring>

using namespace std;

typedef long long ll;

const int MOD = 998244353;
const int MSIZE = 5001;

long long val(string s) {
	long long cur = 1, ans = 0;

	for (int i = s.length() - 1; i >= 0; --i) {
		if (s[i] != '.') {
			ans += cur * (s[i] - '0');
			cur *= 10;
		}
	}
	if (s.length() < 4 || s[s.length() - 3] != '.')
		ans *= 100;
	return ans;
}

int main() {
	//ios_base::sync_with_stdio(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "rt", stdin);
#endif
	string s;
	cin >> s;
	string cur;
	s += 'a';
	vector<string> v;
	for (int i = 0; i < s.length(); ++i) {
		if (s[i] < 'a' || s[i] > 'z')
			cur += s[i];
		else if (cur.length() != 0) {
			v.push_back(cur);
			cur.clear();
		}
	}
	long long ans = 0;
	for (int i = 0; i < v.size(); ++i)
		ans += val(v[i]);
	string output;
	output += ans % 10 + '0';
	output += (ans % 100) / 10 + '0';
	output += '.';
	ans /= 100;
	int id = 0;
	while (ans != 0) {
		output += ans % 10 + '0';
		ans /= 10;
		id++;
		if (id % 3 == 0)
			output += '.';
	}
	reverse(output.begin(), output.end());
	if (output[0] == '.')
		cout << 0;
	cout << output;
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <map>
#include <algorithm>
#include <queue>
#include <cstring>

using namespace std;

typedef long long ll;

const int MOD = 998244353;
const int MSIZE = 5001;

long long val(string s) {
	long long cur = 1, ans = 0;

	for (int i = s.length() - 1; i >= 0; --i) {
		if (s[i] != '.') {
			ans += cur * (s[i] - '0');
			cur *= 10;
		}
	}
	if (s.length() < 4 || s[s.length() - 3] != '.')
		ans *= 100;
	return ans;
}

int main() {
	//ios_base::sync_with_stdio(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "rt", stdin);
#endif
	string s;
	cin >> s;
	string cur;
	s += 'a';
	vector<string> v;
	for (int i = 0; i < s.length(); ++i) {
		if (s[i] < 'a' || s[i] > 'z')
			cur += s[i];
		else if (cur.length() != 0) {
			v.push_back(cur);
			cur.clear();
		}
	}
	long long ans = 0;
	for (int i = 0; i < v.size(); ++i)
		ans += val(v[i]);
	string output;
	if (ans % 100 != 0) {
		output += ans % 10 + '0';
		output += (ans % 100) / 10 + '0';
		output += '.';
	}
	ans /= 100;
	int id = 0;
	while (ans != 0) {
		output += ans % 10 + '0';
		ans /= 10;
		id++;
		if (id % 3 == 0 && ans != 0)
			output += '.';
	}
	reverse(output.begin(), output.end());
	if (output.length() == 0 || output[0] == '.')
		cout << 0;
	cout << output;
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <map>
#include <algorithm>
#include <queue>
#include <cstring>

using namespace std;

typedef long long ll;

const int MOD = 998244353;
const int MSIZE = 5001;

long long val(string s) {
	long long cur = 1, ans = 0;

	for (int i = s.length() - 1; i >= 0; --i) {
		if (s[i] != '.') {
			ans += cur * (s[i] - '0');
			cur *= 10;
		}
	}
	if (s.length() < 4 || s[s.length() - 3] != '.')
		ans *= 100;
	return ans;
}

int main() {
	//ios_base::sync_with_stdio(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "rt", stdin);
#endif
	string s;
	cin >> s;
	string cur;
	s += 'a';
	vector<string> v;
	for (int i = 0; i < s.length(); ++i) {
		if (s[i] < 'a' || s[i] > 'z')
			cur += s[i];
		else if (cur.length() != 0) {
			v.push_back(cur);
			cur.clear();
		}
	}
	long long ans = 0;
	for (int i = 0; i < v.size(); ++i)
		ans += val(v[i]);
	string output;
	if (ans % 100 != 0) {
		output += ans % 10 + '0';
		output += (ans % 100) / 10 + '0';
		output += '.';
		ans /= 100;
	}
	int id = 0;
	while (ans != 0) {
		output += ans % 10 + '0';
		ans /= 10;
		id++;
		if (id % 3 == 0 && ans != 0)
			output += '.';
	}
	reverse(output.begin(), output.end());
	if (output.length() == 0 || output[0] == '.')
		cout << 0;
	cout << output;
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <map>
#include <algorithm>
#include <queue>
#include <cstring>

using namespace std;

typedef long long ll;

const int MOD = 998244353;
const int MSIZE = 5001;

long long val(string s) {
	long long cur = 1, ans = 0;

	for (int i = s.length() - 1; i >= 0; --i) {
		if (s[i] != '.') {
			ans += cur * (s[i] - '0');
			cur *= 10;
		}
	}
	if (s.length() < 4 || s[s.length() - 3] != '.')
		ans *= 100;
	return ans;
}

int main() {
	//ios_base::sync_with_stdio(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "rt", stdin);
#endif
	string s;
	cin >> s;
	string cur;
	s += 'a';
	vector<string> v;
	for (int i = 0; i < s.length(); ++i) {
		if (s[i] < 'a' || s[i] > 'z')
			cur += s[i];
		else if (cur.length() != 0) {
			v.push_back(cur);
			cur.clear();
		}
	}
	long long ans = 0;
	for (int i = 0; i < v.size(); ++i)
		ans += val(v[i]);
	string output;
	if (ans % 100 != 0) {
		output += ans % 10 + '0';
		output += (ans % 100) / 10 + '0';
		output += '.';
		ans /= 100;
	}
	int id = 0;
	while (ans != 0) {
		output += ans % 10 + '0';
		ans /= 10;
		id++;
		if (id % 3 == 0)
			output += '.';
	}
	reverse(output.begin(), output.end());
	if (output.length() == 0 || output[0] == '.')
		cout << 0;
	cout << output;
	return 0;
}


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#define inf 0x3f3f3f3f
#define ll long long
#define ms(x) memset(x,0,sizeof(x))
using namespace std;
const int N = 1234;
char s[N];
vector<ll>q;
bool ispha(char t)
{
    if(t>='a'&&t<='z')  return true;
    else return false;
}

int main()
{
    scanf("%s",s);
    int len = strlen(s);
    int i = 0;
    ll dot = 0;
    while(i<len)
    {
         if(ispha(s[i]) && isdigit(s[i+1]))
         {
            int j = i+1;
            ll sum = 0;
            while(!ispha(s[j]) && j<len) j++;
            int tmp = j;
            if(s[j-3]=='.')
            {
                dot += 10*(s[j-2]-'0') + 1*(s[j-1]-'0');
                j = j-3;
            }
            int f = 1;
            for(int k=j-1;k>=i+1;k--)
            {
                if(s[k]=='.')continue;
                sum+=(ll)(s[k]-'0')*f;
                f*=10;
            }
            q.push_back(sum);
            i = tmp;
         }
         else i++;
    }
    long long ans = 0;
    for(int i=0;i<q.size();i++)
    {
        ans += (long long)q[i];
    }
    ans += dot/100;
    dot %= 100;
    char answer[200];
    int book[200];  ms(book);
    sprintf(answer,"%lld",ans);
    int l = strlen(answer);
        int k;
        for(i=l-1, k=0;i>=0;i--,k++)
        {
            if((k+1)%3==0 &&k!=0) book[i] = 1;
        }
    for(int i=0;i<l;i++)
    {
        if(book[i] && i!=0) printf(".");
        printf("%c",answer[i]);
    }
    if(dot!=0)
    {
        printf(".");
        printf("%.02d",dot);
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
#include <cstring>
#include <cmath>
#include <vector>
#define inf 0x3f3f3f3f
#define ms(x) memset(x,0,sizeof(x))
using namespace std;
const int N = 1234;
char s[N];
vector<long double>q;
bool ispha(char t)
{
    if(t>='a'&&t<='z')  return true;
    else return false;
}

int main()
{
    scanf("%s",s);
    int len = strlen(s);
    int i = 0;
    while(i<len)
    {
         if(ispha(s[i]) && isdigit(s[i+1]))
         {
            int j = i+1;
            long double sum = 0, dot = 0;
            while(!ispha(s[j]) && j<len) j++;
            int tmp = j;
            if(s[j-3]=='.')
            {
                dot = 0.1*(s[j-2]-'0') + 0.01*(s[j-1]-'0');
                j = j-3;
            }
            int f = 1;
            for(int k=j-1;k>=i+1;k--)
            {
                if(s[k]=='.')continue;
                sum+=(long double)(s[k]-'0')*f;
                f*=10;
            }
            sum += dot;
            q.push_back(sum);
            i = tmp;
         }
         else i++;
    }
    long double ans = 0;
    for(int i=0;i<q.size();i++)
        ans += q[i];
    char answer[200];
    int book[200];
    ms(book);
//    printf("%.2lf\n",ans);
    if(ans-(int)ans!=0)
        sprintf(answer,"%.2llf",ans);
    else sprintf(answer,"%.0llf",ans);
    int l = strlen(answer);
    if(ans-(int)ans!=0)
    {
        int k;
        for(i=l-4,k=0;i>=0;i--,k++)
        {
            if(k!=0 && k%2==0&&i!=0) book[i] = 1;
        }
    }
    else
    {
        int k;
        for(i=l-1, k=0;i>=0;i--,k++)
        {
            if(k!=0 && k%2==0&&i!=0) book[i] = 1;
        }
    }
    for(int i=0;i<l;i++)
    {
        if(book[i]) printf(".");
        printf("%c",answer[i]);
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#define inf 0x3f3f3f3f
#define ll long long
#define ms(x) memset(x,0,sizeof(x))
using namespace std;
const int N = 1234;
char s[N];
vector<ll>q;
bool ispha(char t)
{
    if(t>='a'&&t<='z')  return true;
    else return false;
}

int main()
{
    scanf("%s",s);
    int len = strlen(s);
    int i = 0;
    ll dot = 0;
    while(i<len)
    {
         if(ispha(s[i]) && isdigit(s[i+1]))
         {
            int j = i+1;
            ll sum = 0;
            while(!ispha(s[j]) && j<len) j++;
            int tmp = j;
            if(s[j-3]=='.')
            {
                dot += 10*(s[j-2]-'0') + 1*(s[j-1]-'0');
                j = j-3;
            }
            int f = 1;
            for(int k=j-1;k>=i+1;k--)
            {
                if(s[k]=='.')continue;
                sum+=(ll)(s[k]-'0')*f;
                f*=10;
            }
            q.push_back(sum);
            i = tmp;
         }
         else i++;
    }
    long long ans = 0;
    for(int i=0;i<q.size();i++)
    {
        ans += (long long)q[i];
    }
    ans += dot/100;
    dot %= 100;
    char answer[200];
    int book[200];
    ms(book);
    sprintf(answer,"%lld",ans);
    int l = strlen(answer);
        int k;
        for(i=l-1, k=0;i>=0;i--,k++)
        {
            if(k!=0 && k%2==0&&i!=0) book[i] = 1;
        }
    for(int i=0;i<l;i++)
    {
        if(book[i]) printf(".");
        printf("%c",answer[i]);
    }
    if(dot!=0)
    {
        printf(".");
        printf("%.02d",dot);
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#define inf 0x3f3f3f3f
#define ms(x) memset(x,0,sizeof(x))
using namespace std;
const int N = 1234;
char s[N];
vector<double>q;
bool ispha(char t)
{
    if(t>='a'&&t<='z')  return true;
    else return false;
}

int main()
{
    scanf("%s",s);
    int len = strlen(s);
    int i = 0;
    while(i<len)
    {
         if(ispha(s[i]) && isdigit(s[i+1]))
         {
            int j = i+1;
            double sum = 0, dot = 0;
            while(!ispha(s[j]) && j<len) j++;
            int tmp = j;
            if(s[j-3]=='.')
            {
                dot = 0.1*(s[j-2]-'0') + 0.01*(s[j-1]-'0');
                j = j-3;
            }
            int f = 1;
            for(int k=j-1;k>=i+1;k--)
            {
                if(s[k]=='.')continue;
                sum+=(double)(s[k]-'0')*f;
                f*=10;
            }
            sum += dot;
            q.push_back(sum);
            i = tmp;
         }
         else i++;
    }
    long long ans = 0;
    double dt = 0;
    for(int i=0;i<q.size();i++)
    {
        ans += (long long)q[i];
        dt+=(q[i]-(int)q[i]);
    }
    char answer[200];
    int book[200];
    ms(book);
    sprintf(answer,"%lld",ans);
    char dtt[100];
    sprintf(dtt,"%.2lf",dt);
    int l = strlen(answer);
        int k;
        for(i=l-1, k=0;i>=0;i--,k++)
        {
            if(k!=0 && k%2==0&&i!=0) book[i] = 1;
        }
    for(int i=0;i<l;i++)
    {
        if(book[i]) printf(".");
        printf("%c",answer[i]);
    }
    if(dt!=0)
    {
        printf(".");
        int la = strlen(dtt);
        printf("%c%c",dtt[la-2],dtt[la-1]);
    }
    return 0;
}


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#define inf 0x3f3f3f3f
#define ms(x) memset(x,0,sizeof(x))
using namespace std;
const int N = 1234;
char s[N];
vector<double>q;
bool ispha(char t)
{
    if(t>='a'&&t<='z')  return true;
    else return false;
}

int main()
{
    scanf("%s",s);
    int len = strlen(s);
    int i = 0;
    while(i<len)
    {
         if(ispha(s[i]) && isdigit(s[i+1]))
         {
            int j = i+1;
            double sum = 0, dot = 0;
            while(!ispha(s[j]) && j<len) j++;
            int tmp = j;
            if(s[j-3]=='.')
            {
                dot = 0.1*(s[j-2]-'0') + 0.01*(s[j-1]-'0');
                j = j-3;
            }
            int f = 1;
            for(int k=j-1;k>=i+1;k--)
            {
                if(s[k]=='.')continue;
                sum+=(double)(s[k]-'0')*f;
                f*=10;
            }
            sum += dot;
            q.push_back(sum);
            i = tmp;
         }
         else i++;
    }
    long double ans = 0;
    for(int i=0;i<q.size();i++)
        ans += q[i];
    char answer[200];
    int book[200];
    ms(book);
//    printf("%.2lf\n",ans);
    if(ans-(int)ans!=0)
        sprintf(answer,"%.2lf",ans);
    else sprintf(answer,"%.0lf",ans);
    int l = strlen(answer);
    if(ans-(int)ans!=0)
    {
        int k;
        for(i=l-4,k=0;i>=0;i--,k++)
        {
            if(k!=0 && k%2==0&&i!=0) book[i] = 1;
        }
    }
    else
    {
        int k;
        for(i=l-1, k=0;i>=0;i--,k++)
        {
            if(k!=0 && k%2==0&&i!=0) book[i] = 1;
        }
    }
    for(int i=0;i<l;i++)
    {
        if(book[i]) printf(".");
        printf("%c",answer[i]);
    }
    return 0;
}


#include <stdio.h>
#include <string.h>
char s[2000];
int dollar[2000], cent[2000];
int dot[2000], digit[2000];
int index;
long long ans1, ans2;
int ans[1000];

int main()
{
    //freopen("input.txt", "r", stdin);
    scanf("%s", s);
    int length=strlen(s);
    int i;
    int a=0, b=0;
    for(i=0; i<length; i++)
    {
        if('a'<=s[i]&&s[i]<='z')
        {
            if(a!=0) index++;
            a=0;
        }
        else if('0'<=s[i]&&s[i]<='9')
        {
            dollar[index]=dollar[index]*10+s[i]-'0';
            a++;
            digit[index]++;
        }
        else if(s[i]=='.')
        {
            dot[index]++;
            digit[index]=0;
        }
        //printf("%d %d %d %d\n", index, dollar[index], digit[index], dot[index] );
    }

    for(i=0; i<=index; i++)
    {
        if(digit[i]==2&&dot[i]!=0)
        {
            cent[i]=dollar[i]%100;
            dollar[i]/=100;
        }
        ans1+=dollar[i];
        ans2+=cent[i];
    }
    if(ans2>=100) { ans1=ans2/100; ans2%=100; }

    //for(i=0; i<=index; i++) printf("%d %d\n", dollar[i], cent[i]);
    //printf("%d %d\n", ans1, ans2);
    index=0;
    a=0;
    if(ans1==0) printf("0");
    else while(ans1>=1)
    {
        if(a==3)
        {
            ans[index++]=100;
            a=0;
        }
        ans[index++]=ans1%10;
        ans1/=10;
        a++;

    }
    for(i=index-1; i>=0; i--) printf("%c", ans[i]==100?'.':ans[i]+'0');
    if(ans2!=0) printf(".%02d", ans2);
}


#include <stdio.h>
#include <string.h>
char s[2000];
int dollar[2000], cent[2000];
int dot[2000], digit[2000];
int index;
long long ans1, ans2;
int ans[1000];

int main()
{
    //freopen("input.txt", "r", stdin);
    scanf("%s", s);
    int length=strlen(s);
    int i;
    int a=0, b=0;
    for(i=0; i<length; i++)
    {
        if('a'<=s[i]&&s[i]<='z')
        {
            if(a!=0) index++;
            a=0;
        }
        else if('0'<=s[i]&&s[i]<='9')
        {
            dollar[index]=dollar[index]*10+s[i]-'0';
            a++;
            digit[index]++;
        }
        else if(s[i]=='.')
        {
            dot[index]++;
            digit[index]=0;
        }
    }

    for(i=0; i<=index; i++)
    {
        if(digit[i]==2)
        {
            cent[i]=dollar[i]%100;
            dollar[i]/=100;
        }
        ans1+=dollar[i];
        ans2+=cent[i];
    }
    if(ans2>=100) { ans1=ans2/100; ans2%=100; }

    index=0;
    a=0;
    if(ans1==0) printf("0");
    else while(ans1>=1)
    {
        ans[index++]=ans1%10;
        ans1/=10;
        a++;
        if(a==3)
        {
            ans[index++]=100;
        }
    }
    for(i=index-1; i>=0; i--) printf("%c", ans[i]==100?'.':ans[i]+'0');
    if(ans2!=0) printf(".%02d", ans2);
    //for(i=0; i<=index; i++) printf("%d %d\n", dollar[i], cent[i]);
}


#include <stdio.h>
#include <string.h>
char s[2000];
int dollar[2000], cent[2000];
int dot[2000], digit[2000];
int index;
long long ans1, ans2;
int ans[1000];

int main()
{
    //freopen("input.txt", "r", stdin);
    scanf("%s", s);
    int length=strlen(s);
    int i;
    int a=0, b=0;
    for(i=0; i<length; i++)
    {
        if('a'<=s[i]&&s[i]<='z')
        {
            if(a!=0) index++;
            a=0;
        }
        else if('0'<=s[i]&&s[i]<='9')
        {
            dollar[index]=dollar[index]*10+s[i]-'0';
            a++;
            digit[index]++;
        }
        else if(s[i]=='.')
        {
            dot[index]++;
            digit[index]=0;
        }
        //printf("%d %d %d %d\n", index, dollar[index], digit[index], dot[index] );
    }

    for(i=0; i<=index; i++)
    {
        if(digit[i]==2&&dot[i]!=0)
        {
            cent[i]=dollar[i]%100;
            dollar[i]/=100;
        }
        ans1+=dollar[i];
        ans2+=cent[i];
    }
    if(ans2>=100) { ans1=ans2/100; ans2%=100; }

    //for(i=0; i<=index; i++) printf("%d %d\n", dollar[i], cent[i]);
    index=0;
    a=0;
    if(ans1==0) printf("0");
    else while(ans1>=1)
    {
        if(a==3)
        {
            ans[index++]=100;
        }
        ans[index++]=ans1%10;
        ans1/=10;
        a++;

    }
    for(i=index-1; i>=0; i--) printf("%c", ans[i]==100?'.':ans[i]+'0');
    if(ans2!=0) printf(".%02d", ans2);
}


#include <stdio.h>
#include <string.h>
char s[2000];
int dollar[2000], cent[2000];
int dot[2000], digit[2000];
int index;
long long ans1, ans2;
int ans[1000];

int main()
{
    //freopen("input.txt", "r", stdin);
    scanf("%s", s);
    int length=strlen(s);
    int i;
    int a=0, b=0;
    for(i=0; i<length; i++)
    {
        if('a'<=s[i]&&s[i]<='z')
        {
            if(a!=0) index++;
            a=0;
        }
        else if('0'<=s[i]&&s[i]<='9')
        {
            dollar[index]=dollar[index]*10+s[i]-'0';
            a++;
            digit[index]++;
        }
        else if(s[i]=='.')
        {
            dot[index]++;
            digit[index]=0;
        }
        //printf("%d %d %d %d\n", index, dollar[index], digit[index], dot[index] );
    }

    for(i=0; i<=index; i++)
    {
        if(digit[i]==2&&dot[i]!=0)
        {
            cent[i]=dollar[i]%100;
            dollar[i]/=100;
        }
        ans1+=(long long)dollar[i];
        ans2+=(long long)cent[i];
    }
    if(ans2>=100) { ans1+=ans2/100; ans2%=100; }

    index=0;
    a=0;
    if(ans1==0) printf("0");
    else while(ans1>=1)
    {
        if(a==3)
        {
            ans[index++]=100;
            a=0;
        }
        ans[index++]=ans1%10;
        ans1/=10;
        a++;

    }
    for(i=index-1; i>=0; i--) printf("%c", ans[i]==100?'.':ans[i]+'0');
    if(ans2!=0) printf(".%02d", ans2);
}


#include <stdio.h>
#include <string.h>
char s[2000];
int dollar[2000], cent[2000];
int dot[2000], digit[2000];
int index;
long long ans1, ans2;
int ans[1000];

int main()
{
    //freopen("input.txt", "r", stdin);
    scanf("%s", s);
    int length=strlen(s);
    int i;
    int a=0, b=0;
    for(i=0; i<length; i++)
    {
        if('a'<=s[i]&&s[i]<='z')
        {
            if(a!=0) index++;
            a=0;
        }
        else if('0'<=s[i]&&s[i]<='9')
        {
            dollar[index]=dollar[index]*10+s[i]-'0';
            a++;
            digit[index]++;
        }
        else if(s[i]=='.')
        {
            dot[index]++;
            digit[index]=0;
        }
        //printf("%d %d %d %d\n", index, dollar[index], digit[index], dot[index] );
    }

    for(i=0; i<=index; i++)
    {
        if(digit[i]==2&&dot[i]!=0)
        {
            cent[i]=dollar[i]%100;
            dollar[i]/=100;
        }
        ans1+=dollar[i];
        ans2+=cent[i];
    }
    if(ans2>=100) { ans1=ans2/100; ans2%=100; }

    //for(i=0; i<=index; i++) printf("%d %d\n", dollar[i], cent[i]);
    index=0;
    a=0;
    if(ans1==0) printf("0");
    else while(ans1>=1)
    {
        if(a==3)
        {
            ans[index++]=100;
        }
        ans[index++]=ans1%10;
        ans1/=10;
        a++;

    }
    for(i=index-1; i>=0; i--) printf("%c", ans[i]==100?'.':ans[i]+'0');
    if(ans2!=0) printf(".%0d", ans2);
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int len = strlen(inp);
	double sum = 0;
	string num;
	int dot = 0;
	bool active = false;
	for(int i = 0; i <= len; i++) {
		if(check(inp[i]) && len != i) {
			active = true;
			num += inp[i];

			if(inp[i] == '.')
				dot++;
		} else {
			if(active == true) {
				if(dot <= 1) {
					sum += atof(num.c_str());
				} else {
					if(num[num.length() - 3] == '.') {
						for(int i = 0; i < num.length() - 3; i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					} else {
						for(int i = 0; i < num.length(); i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					}
					sum += atof(num.c_str());
				}

				num = "";
				active = false;
			}
		}
	}
	// printf("%.2f\n", sum);

	// bool hasDecimal = (int)(sum * 100) % 100 != 0;

    char ans[1111];
	sprintf(ans, "%.2f", sum);

	string ans1 = ans;
	//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	//if(hasDecimal == false)
		//ans1.erase(ans1.length() - 3, 3);
	len = ans1.length();
	bool hasDecimal = true;
	if(ans1[len - 1] == '0' && ans1[len - 2] == '0') {
		ans1.erase(ans1.length() - 3, 3);
		hasDecimal = false;
	}
	for(int i = (hasDecimal ? ans1.length() - 6 : ans1.length() - 3);
		i >= 1; i -= 3) {
		ans1.insert(i, ".");
		//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	}
	printf("%s\n", ans1.c_str());

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int len = strlen(inp);
	double sum = 0;
	string num;
	int dot = 0;
	bool active = false;
	for(int i = 0; i <= len; i++) {
		if(check(inp[i]) && len != i) {
			active = true;
			num += inp[i];

			if(inp[i] == '.')
				dot++;
		} else {
			if(active == true) {
				if(dot <= 1) {
					sum += atof(num.c_str());
				} else {
					if(num[num.length() - 3] == '.') {
						for(int i = 0; i < num.length() - 3; i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					} else {
						for(int i = 0; i < num.length(); i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					}
					sum += atof(num.c_str());
				}

				num = "";
				active = false;
			}
		}
	}
	//printf("%.2f\n", sum);

	bool hasDecimal = (int)(sum * 100) % 100 != 0;

    char ans[1111];
	sprintf(ans, "%.2f", sum);

	string ans1 = ans;
	//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	if(hasDecimal == false)
		ans1.erase(ans1.length() - 3, 3);
	for(int i = (hasDecimal ? ans1.length() - 6 : ans1.length() - 2);
		i >= 0; i -= 3) {
		ans1.insert(i, ".");
		//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	}
	printf("%s\n", ans1.c_str());

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int len = strlen(inp);
	double sum = 0;
	string num;
	int dot = 0;
	bool active = false;
	for(int i = 0; i <= len; i++) {
		if(check(inp[i]) && len != i) {
			active = true;
			num += inp[i];

			if(inp[i] == '.')
				dot++;
		} else {
			if(active == true) {
				if(dot <= 1) {
					sum += atof(num.c_str());
				} else {
					if(num[num.length() - 3] == '.') {
						for(int i = 0; i < num.length() - 3; i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					} else {
						for(int i = 0; i < num.length(); i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					}
					sum += atof(num.c_str());
				}

				num = "";
				active = false;
			}
		}
	}
	printf("%.2f\n", sum);

	bool hasDecimal = (int)(sum * 100) % 100 != 0;

    char ans[1111];
	sprintf(ans, "%.2f", sum);

	string ans1 = ans;
	//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	if(hasDecimal == false)
		ans1.erase(ans1.length() - 3, 3);
	for(int i = (hasDecimal ? ans1.length() - 6 : ans1.length() - 2);
		i >= 1; i -= 3) {
		ans1.insert(i, ".");
		//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	}
	printf("%s\n", ans1.c_str());

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int len = strlen(inp);
	double sum = 0;
	string num;
	int dot = 0;
	bool active = false;
	for(int i = 0; i <= len; i++) {
		if(check(inp[i]) && len != i) {
			active = true;
			num += inp[i];

			if(inp[i] == '.')
				dot++;
		} else {
			if(active == true) {
				if(dot <= 1) {
					sum += atof(num.c_str());
				} else {
					if(num[num.length() - 3] == '.') {
						for(int i = 0; i < num.length() - 3; i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					} else {
						for(int i = 0; i < num.length(); i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					}
					sum += atof(num.c_str());
				}

				num = "";
				active = false;
			}
		}
	}
	// printf("%.2f\n", sum);

	bool hasDecimal = (int)(sum * 100) % 100 != 0;

    char ans[1111];
	sprintf(ans, "%.2f", sum);

	string ans1 = ans;
	//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	if(hasDecimal == false)
		ans1.erase(ans1.length() - 3, 3);
	for(int i = (hasDecimal ? ans1.length() - 6 : ans1.length() - 2);
		i >= 1; i -= 3) {
		ans1.insert(i, ".");
		//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	}
	printf("%s\n", ans1.c_str());

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int integer = 0, decimal = 0, len = strlen(inp);
	bool active = false;
	string num = "";
	for(int i = 0; i <= len; i++) {
		if(i != len && check(inp[i])) {
			active = true;
			num += inp[i];
		} else {
			if(active == true) {
				int numLen = num.length();

				if(numLen > 3 && num[numLen - 3] == '.') {
					// has decimal
					string num1 = num.substr(0, numLen - 3);
					string num2 = num.substr(numLen - 2, 3);

					for(int i = 0; i < num1.length(); i++)
						if(num1[i] == '.')
							num1.erase(i, 1);
					integer += atoi(num1.c_str());
					decimal += atoi(num2.c_str());
				} else {
					for(int i = 0; i < numLen; i++)
						if(num[i] == '.')
							num.erase(i, 1);
					integer += atoi(num.c_str());
				}
			}

			active = false;
			num.clear();
		}
	}

	integer += decimal / 100;
	decimal %= 100;

	// printf("%d %d\n", integer, decimal);

	if(integer == 0) {
		printf("0.%d\n", decimal);
	} else {
		if(decimal == 0) {
			if(integer >= 1000)
				printf("%d.%d\n", integer / 1000, integer % 1000);
			else
				printf("%d\n", integer % 1000);
		} else {
			if(integer >= 1000)
				printf("%d.%d.%d\n", integer / 1000, integer % 1000, decimal);
			else
				printf("%d.%d\n", integer % 1000, decimal);
		}
	}

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int len = strlen(inp);
	double sum = 0;
	string num;
	int dot = 0;
	bool active = false;
	for(int i = 0; i <= len; i++) {
		if(check(inp[i]) && len != i) {
			active = true;
			num += inp[i];

			if(inp[i] == '.')
				dot++;
		} else {
			if(active == true) {
				if(dot <= 1) {
					sum += atof(num.c_str());
				} else {
					if(num[num.length() - 3] == '.') {
						for(int i = 0; i < num.length() - 3; i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					} else {
						for(int i = 0; i < num.length(); i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					}
					sum += atof(num.c_str());
				}

				num = "";
				active = false;
			}
		}
	}
	// printf("%.2f\n", sum);

	bool hasDecimal = (int)(sum * 100) % 100 != 0;

    char ans[1111];
	sprintf(ans, "%.2f", sum);

	string ans1 = ans;
	//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	//if(hasDecimal == false)
		//ans1.erase(ans1.length() - 3, 3);
	len = ans1.length();
	if(ans1[len - 1] == '0' && ans1[len - 2] == '0')
		ans1.erase(ans1.length() - 3, 3);
	for(int i = (hasDecimal ? ans1.length() - 6 : ans1.length() - 3);
		i >= 1; i -= 3) {
		ans1.insert(i, ".");
		//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	}
	printf("%s\n", ans1.c_str());

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int integer = 0, decimal = 0, len = strlen(inp);
	bool active = false;
	string num = "";
	for(int i = 0; i <= len; i++) {
		if(i != len && check(inp[i])) {
			active = true;
			num += inp[i];
		} else {
			if(active == true) {
				int numLen = num.length();

				if(numLen > 3 && num[numLen - 3] == '.') {
					// has decimal
					string num1 = num.substr(0, numLen - 3);
					string num2 = num.substr(numLen - 2, 3);

					for(int i = 0; i < num1.length(); i++)
						if(num1[i] == '.')
							num1.erase(i, 1);
					integer += atoi(num1.c_str());
					decimal += atoi(num2.c_str());
				} else {
					for(int i = 0; i < numLen; i++)
						if(num[i] == '.')
							num.erase(i, 1);
					integer += atoi(num.c_str());
				}
			}

			active = false;
			num.clear();
		}
	}

	integer += decimal / 100;
	decimal %= 100;

	// printf("%d %d\n", integer, decimal);

	if(integer == 0) {
		printf("0.%02d\n", decimal);
	} else {
		if(decimal == 0) {
			if(integer >= 1000)
				printf("%d.%d\n", integer / 1000, integer % 1000);
			else
				printf("%d\n", integer % 1000);
		} else {
			if(integer >= 1000)
				printf("%d.%d.%02d\n", integer / 1000, integer % 1000, decimal);
			else
				printf("%d.%02d\n", integer % 1000, decimal);
		}
	}

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int integer = 0, decimal = 0, len = strlen(inp);
	bool active = false;
	string num = "";
	for(int i = 0; i <= len; i++) {
		if(i != len && check(inp[i])) {
			active = true;
			num += inp[i];
		} else {
			if(active == true) {
				int numLen = num.length();

				if(numLen > 3 && num[numLen - 3] == '.') {
					// has decimal
					string num1 = num.substr(0, numLen - 3);
					string num2 = num.substr(numLen - 2, 3);

					for(int i = 0; i < num1.length(); i++)
						if(num1[i] == '.')
							num1.erase(i, 1);
					integer += atoi(num1.c_str());
					decimal += atoi(num2.c_str());
				} else {
					for(int i = 0; i < numLen; i++)
						if(num[i] == '.')
							num.erase(i, 1);
					integer += atoi(num.c_str());
				}
			}

			active = false;
			num.clear();
		}
	}

	integer += decimal / 100;
	decimal %= 100;

	// printf("%d %d\n", integer, decimal);

	if(integer == 0) {
		printf("0.%02d\n", decimal);
	} else {
		if(decimal == 0) {
			if(integer >= 1000000)
				printf("%d.%03d.%03d\n", integer / 1000000, (integer / 1000) % 1000, integer % 1000);
			else if(integer >= 1000)
				printf("%d.%03d\n", integer / 1000, integer % 1000);
			else
				printf("%d\n", integer % 1000);
		} else {
			if(integer >= 1000000)
				printf("%d.%03d.%03d.%02d\n", integer / 1000000, (integer / 1000) % 1000, integer % 1000, decimal);
			else if(integer >= 1000)
				printf("%d.%03d.%02d\n", integer / 1000, integer % 1000, decimal);
			else
				printf("%d.%02d\n", integer % 1000, decimal);
		}
	}

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int, int> ii;

bool check(char c)
{
	return c == '.' || ('0' <= c && c <= '9');
}

int main()
{
	char inp[1111];
	scanf("%s", inp);

	int len = strlen(inp);
	double sum = 0;
	string num;
	int dot = 0;
	bool active = false;
	for(int i = 0; i <= len; i++) {
		if(check(inp[i]) && len != i) {
			active = true;
			num += inp[i];

			if(inp[i] == '.')
				dot++;
		} else {
			if(active == true) {
				if(dot <= 1) {
					sum += atof(num.c_str());
				} else {
					if(num[num.length() - 3] == '.') {
						for(int i = 0; i < num.length() - 3; i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					} else {
						for(int i = 0; i < num.length(); i++) {
							if(num[i] == '.')
								num.erase(i, 1);
						}
					}
					sum += atof(num.c_str());
				}

				num = "";
				active = false;
			}
		}
	}
	// printf("%.2f\n", sum);

	bool hasDecimal = (int)(sum * 100) % 100 != 0;

    char ans[1111];
	sprintf(ans, "%.2f", sum);

	string ans1 = ans;
	//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	if(hasDecimal == false)
		ans1.erase(ans1.length() - 3, 3);
	for(int i = (hasDecimal ? ans1.length() - 6 : ans1.length() - 3);
		i >= 1; i -= 3) {
		ans1.insert(i, ".");
		//printf("%d %d %s\n", hasDecimal, ans1.length(), ans1.c_str());
	}
	printf("%s\n", ans1.c_str());

	return 0;
}


//http://codeforces.com/contest/727/problem/B

#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <list>

using namespace std;

#define endl "\n"
#define pii pair <int, int>
#define pll pair <long long, long long>
#define vi vector <int>
#define ll long long
#define mp make_pair

string str;
string result = "";
double resNumber;

string toStr(int number);

int main()
{
	int ii, jj;
	string cur = "";
	double curNumber, fract;

	ios::sync_with_stdio(false);

	cin >> str;

	str += "a";

	for (ii = 0; ii < str.size(); ii++)
	{
		if (str[ii] < 'A')
			cur += str[ii];
		else if ((str != ".") && (cur != ""))
		{
			fract = 0;
			curNumber = 0;

			if ((cur.size() > 3) && (cur[cur.size() - 3] == '.'))
			{
				fract = (cur[cur.size() - 1] - '0') / 100.0;
				fract += (cur[cur.size() - 2] - '0') / 10.0;
				cur.erase((cur.size() - 3), 3);
			}

			for (jj = 0; jj < cur.size(); jj++)
			{
				if (cur[jj] != '.')
					curNumber = curNumber * 10 + (cur[jj] - '0');
			}

			resNumber += curNumber + fract;
			cur = "";
		}
	}

	if (resNumber == double(int(resNumber)))
		result = toStr(int(resNumber));
	else
		result += toStr(int(resNumber)) + "." + toStr(int((resNumber - double(int(resNumber)) + 0.000000000001) * 100));

	if (result[0] == '.')
		result = "0" + result;

	if ((result.find('.') != -1) && (result.find('.') == (result.size() - 2)))
		result = result.substr(0, (result.find('.') + 1)) + "0" + result[result.size() - 1];

	cout << result << endl;

	return 0;
}

string toStr(int number)
{
	int ii;
	string res = "";

	for (ii = 0; number > 0; ii++)
	{
		if (ii == 3)
		{
			res += ".";

			ii = 0;
		}

		res += number % 10 + '0';
		number /= 10;
	}

	reverse(res.begin(), res.end());

	return res;
}


//http://codeforces.com/contest/727/problem/B

#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <list>

using namespace std;

#define endl "\n"
#define pii pair <int, int>
#define pll pair <long long, long long>
#define vi vector <int>
#define ll long long
#define mp make_pair

string str;
string result = "";
double resNumber;

string toStr(int number);

int main()
{
	int ii, jj;
	string cur = "";
	double curNumber, fract;

	ios::sync_with_stdio(false);

	cin >> str;

	str += "a";

	for (ii = 0; ii < str.size(); ii++)
	{
		if (str[ii] < 'A')
			cur += str[ii];
		else if ((str != ".") && (cur != ""))
		{
			fract = 0;
			curNumber = 0;

			if ((cur.size() > 3) && (cur[cur.size() - 3] == '.'))
			{
				fract = (cur[cur.size() - 1] - '0') / 100.0;
				fract += (cur[cur.size() - 2] - '0') / 10.0;
				cur.erase((cur.size() - 3), 3);
			}

			for (jj = 0; jj < cur.size(); jj++)
			{
				if (cur[jj] != '.')
					curNumber = curNumber * 10 + (cur[jj] - '0');
			}

			resNumber += curNumber + fract;
			cur = "";
		}
	}

	if (resNumber == double(int(resNumber)))
		result = toStr(int(resNumber));
	else
		result += toStr(int(resNumber)) + "." + toStr(int((resNumber - double(int(resNumber)) + 0.000000001) * 100));

	if (result[0] == '.')
		result = "0" + result;

	if (result.find('.') == (result.size() - 2))
		result = result.substr(0, (result.find('.') + 1)) + "0" + result[result.size() - 1];

	cout << result << endl;

	return 0;
}

string toStr(int number)
{
	int ii;
	string res = "";

	for (ii = 0; number > 0; ii++)
	{
		if (ii == 3)
		{
			res += ".";

			ii = 0;
		}

		res += number % 10 + '0';
		number /= 10;
	}

	reverse(res.begin(), res.end());

	return res;
}


//http://codeforces.com/contest/727/problem/B

#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <list>

using namespace std;

#define endl "\n"
#define pii pair <int, int>
#define pll pair <long long, long long>
#define vi vector <int>
#define ll long long
#define mp make_pair

string str;
string result = "";
double resNumber;

string toStr(int number);

int main()
{
	int ii, jj;
	string cur = "";
	double curNumber, fract;

	ios::sync_with_stdio(false);

	cin >> str;

	str += "a";

	for (ii = 0; ii < str.size(); ii++)
	{
		if (str[ii] < 'A')
			cur += str[ii];
		else if ((str != ".") && (cur != ""))
		{
			fract = 0;
			curNumber = 0;

			if ((cur.size() > 3) && (cur[cur.size() - 3] == '.'))
			{
				fract = (cur[cur.size() - 1] - '0') / 100.0;
				fract += (cur[cur.size() - 2] - '0') / 10.0;
				cur.erase((cur.size() - 3), 3);
			}

			for (jj = 0; jj < cur.size(); jj++)
			{
				if (cur[jj] != '.')
					curNumber = curNumber * 10 + (cur[jj] - '0');
			}

			resNumber += curNumber + fract;
			cur = "";
		}
	}

	if (resNumber == double(int(resNumber)))
		result = toStr(int(resNumber));
	else
		result += toStr(int(resNumber)) + "." + toStr(int((resNumber - double(int(resNumber)) + 0.000000001) * 100));

	if (result[0] == '.')
		result = "0" + result;

	if ((result.find('.') != -1) && (result.find('.') == (result.size() - 2)))
		result = result.substr(0, (result.find('.') + 1)) + "0" + result[result.size() - 1];

	cout << result << endl;

	return 0;
}

string toStr(int number)
{
	int ii;
	string res = "";

	for (ii = 0; number > 0; ii++)
	{
		if (ii == 3)
		{
			res += ".";

			ii = 0;
		}

		res += number % 10 + '0';
		number /= 10;
	}

	reverse(res.begin(), res.end());

	return res;
}


//http://codeforces.com/contest/727/problem/B

#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <list>

using namespace std;

#define endl "\n"
#define pii pair <int, int>
#define pll pair <long long, long long>
#define vi vector <int>
#define ll long long
#define mp make_pair

string str;
string result = "";
double resNumber;

string toStr(int number);

int main()
{
	int ii, jj;
	string cur = "";
	double curNumber, fract;

	ios::sync_with_stdio(false);

	cin >> str;

	str += "a";

	for (ii = 0; ii < str.size(); ii++)
	{
		if (str[ii] < 'A')
			cur += str[ii];
		else if ((str != ".") && (cur != ""))
		{
			fract = 0;
			curNumber = 0;

			if ((cur.size() > 3) && (cur[cur.size() - 3] == '.'))
			{
				fract = (cur[cur.size() - 1] - '0') / 100.0;
				fract += (cur[cur.size() - 2] - '0') / 10.0;
				cur.erase((cur.size() - 3), 3);
			}

			for (jj = 0; jj < cur.size(); jj++)
			{
				if (cur[jj] != '.')
					curNumber = curNumber * 10 + (cur[jj] - '0');
			}

			resNumber += curNumber + fract + 0.0000001;
			cur = "";
		}
	}

	if ((resNumber - double(int(resNumber))) <= 0.00001)
		result = toStr(int(resNumber));
	else
		result += toStr(int(resNumber)) + "." + toStr(int(((resNumber - double(int(resNumber)) + 0.001) * 100)));

	if (result[0] == '.')
		result = "0" + result;

	if ((result.find('.') != -1) && (result.find('.') == (result.size() - 2)))
		result = result.substr(0, (result.find('.') + 1)) + "0" + result[result.size() - 1];

	cout << result << endl;

	return 0;
}

string toStr(int number)
{
	int ii;
	string res = "";

	for (ii = 0; number > 0; ii++)
	{
		if (ii == 3)
		{
			res += ".";

			ii = 0;
		}

		res += number % 10 + '0';
		number /= 10;
	}

	reverse(res.begin(), res.end());

	return res;
}


//http://codeforces.com/contest/727/problem/B

#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <list>

using namespace std;

#define endl "\n"
#define pii pair <int, int>
#define pll pair <long long, long long>
#define vi vector <int>
#define ll long long
#define mp make_pair

string str;
string result = "";
double resNumber;

string toStr(int number);

int main()
{
	int ii, jj;
	string cur = "";
	double curNumber, fract;

	ios::sync_with_stdio(false);

	cin >> str;

	str += "a";

	for (ii = 0; ii < str.size(); ii++)
	{
		if (str[ii] < 'A')
			cur += str[ii];
		else if ((str != ".") && (cur != ""))
		{
			fract = 0;
			curNumber = 0;

			if ((cur.size() > 3) && (cur[cur.size() - 3] == '.'))
			{
				fract = (cur[cur.size() - 1] - '0') / 100.0;
				fract += (cur[cur.size() - 2] - '0') / 10.0;
				cur.erase((cur.size() - 3), 3);
			}

			for (jj = 0; jj < cur.size(); jj++)
			{
				if (cur[jj] != '.')
					curNumber = curNumber * 10 + (cur[jj] - '0');
			}

			resNumber += curNumber + fract + 0.0000001;
			cur = "";
		}
	}

	result += toStr(int(resNumber)) + "." + toStr(int(((resNumber - double(int(resNumber)) + 0.001) * 100)));

	if (result[result.size() - 1] == '.')
		result.erase((result.size() - 1), 1);

	if (result[0] == '.')
		result = "0" + result;

	if ((result.size() > 2) && (result[result.size() - 2] == '.'))
		result = result.substr(0, (result.size() - 1)) + "0" + result[result.size() - 1];

	cout << result << endl;

	return 0;
}

string toStr(int number)
{
	int ii;
	string res = "";

	for (ii = 0; number > 0; ii++)
	{
		if (ii == 3)
		{
			res += ".";

			ii = 0;
		}

		res += number % 10 + '0';
		number /= 10;
	}

	reverse(res.begin(), res.end());

	return res;
}


//http://codeforces.com/contest/727/problem/B

#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <list>

using namespace std;

#define endl "\n"
#define pii pair <int, int>
#define pll pair <long long, long long>
#define vi vector <int>
#define ll long long
#define mp make_pair

string str;
string result = "";
double resNumber;

string toStr(int number);

int main()
{
	int ii, jj;
	string cur = "";
	double curNumber, fract;

	ios::sync_with_stdio(false);

	cin >> str;

	str += "a";

	for (ii = 0; ii < str.size(); ii++)
	{
		if (str[ii] < 'A')
			cur += str[ii];
		else if ((str != ".") && (cur != ""))
		{
			fract = 0;
			curNumber = 0;

			if ((cur.size() > 3) && (cur[cur.size() - 3] == '.'))
			{
				fract = (cur[cur.size() - 1] - '0') / 100.0;
				fract += (cur[cur.size() - 2] - '0') / 10.0;
				cur.erase((cur.size() - 3), 3);
			}

			for (jj = 0; jj < cur.size(); jj++)
			{
				if (cur[jj] != '.')
					curNumber = curNumber * 10 + (cur[jj] - '0');
			}

			resNumber += curNumber + fract + 0.0000001;
			cur = "";
		}
	}

	result += toStr(int(resNumber)) + "." + toStr(int(((resNumber - double(int(resNumber)) + 0.001) * 100)));

	if (result[result.size() - 1] == '.')
		result.erase((result.size() - 1), 1);

	if (result[0] == '.')
		result = "0" + result;

	if ((result.find('.') != -1) && (result.find('.') == (result.size() - 2)))
		result = result.substr(0, (result.find('.') + 1)) + "0" + result[result.size() - 1];

	cout << result << endl;

	return 0;
}

string toStr(int number)
{
	int ii;
	string res = "";

	for (ii = 0; number > 0; ii++)
	{
		if (ii == 3)
		{
			res += ".";

			ii = 0;
		}

		res += number % 10 + '0';
		number /= 10;
	}

	reverse(res.begin(), res.end());

	return res;
}


//http://codeforces.com/contest/727/problem/B

#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <list>

using namespace std;

#define endl "\n"
#define pii pair <int, int>
#define pll pair <long long, long long>
#define vi vector <int>
#define ll long long
#define mp make_pair

string str;
string result = "";
double resNumber;

string toStr(int number);

int main()
{
	int ii, jj;
	string cur = "";
	double curNumber, fract;

	ios::sync_with_stdio(false);

	cin >> str;

	str += "a";

	for (ii = 0; ii < str.size(); ii++)
	{
		if (str[ii] < 'A')
			cur += str[ii];
		else if ((str != ".") && (cur != ""))
		{
			fract = 0;
			curNumber = 0;

			if ((cur.size() > 3) && (cur[cur.size() - 3] == '.'))
			{
				fract = (cur[cur.size() - 1] - '0') / 100.0;
				fract += (cur[cur.size() - 2] - '0') / 10.0;
				cur.erase((cur.size() - 3), 3);
			}

			for (jj = 0; jj < cur.size(); jj++)
			{
				if (cur[jj] != '.')
					curNumber = curNumber * 10 + (cur[jj] - '0');
			}

			resNumber += curNumber + fract + 0.0000001;
			cur = "";
		}
	}

	if ((resNumber - double(int(resNumber))) <= 0.000000000001)
		result = toStr(int(resNumber));
	else
		result += toStr(int(resNumber)) + "." + toStr(int(((resNumber - double(int(resNumber)) + 0.001) * 100)));

	if (result[0] == '.')
		result = "0" + result;

	if ((result.find('.') != -1) && (result.find('.') == (result.size() - 2)))
		result = result.substr(0, (result.find('.') + 1)) + "0" + result[result.size() - 1];

	cout << result << endl;

	return 0;
}

string toStr(int number)
{
	int ii;
	string res = "";

	for (ii = 0; number > 0; ii++)
	{
		if (ii == 3)
		{
			res += ".";

			ii = 0;
		}

		res += number % 10 + '0';
		number /= 10;
	}

	reverse(res.begin(), res.end());

	return res;
}


#include<bits/stdc++.h>
using namespace std;

double s_to_d(string s)
{
    int ll,l=s.size();
    if(s[l-3]=='.')
        ll=l-3;
    else
        ll=l;
    int n=0;
    for(int i=0; i<ll; i++)
    {
        if(s[i]=='.') continue;
        n=n*10+(s[i]-'0');
    }
    //cout<<n<<endl;
    double ret=(double)n;
    if(ll!=l)
    {
        ret+=((double)(s[ll+1]-'0'))/10.0;
        ret+=((double)(s[ll+2]-'0'))/100.0;
    }
    return ret;
}

int main()
{
    string s,ss="";
    cin>>s;
    double ans=0.0,ans1;
    for(int i=0; i<s.size(); i++)
    {
        if((s[i]>='0' && s[i]<='9') || s[i]=='.')
            ss+=s[i];
        else
        {
            if(ss.size()>0)
                ans+=s_to_d(ss);
            ss.clear();
        }
    }
    if(ss.size()>0)
        ans+=s_to_d(ss);
    long long res1,res=ans;
    res1=res;
    vector<int>v;
    while(res!=0)
    {
        v.push_back(res%10);
        res/=10;
    }
    reverse(v.begin(),v.end());
    int cnt=0,sz=v.size();
    if(sz>1)
    {
        int m=sz%3;
        for(int i=0; i<m; i++)
            printf("%d",v[i]);
        if(m) printf(".");
        for(int i=m; i<sz-1; i++)
        {
            if(cnt==3)
            {
                printf(".");
                cnt=0;
            }
            cnt++;
            printf("%d",v[i]);
        }
    }
    double p=(ans-(double)res1)+v[sz-1];
    if(p>v[sz-1])
        printf("%.2lf\n",p);
    else
        printf("%d\n",v[sz-1]);
    return 0;
}


#include<bits/stdc++.h>
using namespace std;

double stod(string s)
{
    int ll,l=s.size();
    if(s[l-3]=='.')
        ll=l-3;
    else
        ll=l;
    int n=0;
    for(int i=0; i<ll; i++)
    {
        if(s[i]=='.') continue;
        n=n*10+(s[i]-'0');
    }
    //cout<<n<<endl;
    double ret=(double)n;
    if(ll!=l)
    {
        ret+=((double)(s[ll+1]-'0'))/10.0;
        ret+=((double)(s[ll+2]-'0'))/100.0;
    }
    return ret;
}

int main()
{
    string s,ss="";
    cin>>s;
    double ans=0.0,ans1;
    for(int i=0; i<s.size(); i++)
    {
        if((s[i]>='0' && s[i]<='9') || s[i]=='.')
            ss+=s[i];
        else
        {
            if(ss.size()>0)
                ans+=stod(ss);
            ss.clear();
        }
    }
    if(ss.size()>0)
        ans+=stod(ss);
    long long res1,res=ans;
    res1=res;
    vector<int>v;
    while(res!=0)
    {
        v.push_back(res%10);
        res/=10;
    }
    reverse(v.begin(),v.end());
    int cnt=0,sz=v.size();
    if(sz>1)
    {
        int m=sz%3;
        for(int i=0; i<m; i++)
            printf("%d",v[i]);
        if(m) printf(".");
        for(int i=m; i<sz-1; i++)
        {
            if(cnt==3)
            {
                printf(".");
                cnt=0;
            }
            cnt++;
            printf("%d",v[i]);
        }
    }
    double p=(ans-(double)res1)+v[sz-1];
    if(p>v[sz-1])
        printf("%.2lf\n",p);
    else
        printf("%d\n",v[sz-1]);
    return 0;
}


#include<bits/stdc++.h>
using namespace std;

double process(string s)
{
    int ll,l=s.size();
    if(s[l-3]=='.')
        ll=l-3;
    else
        ll=l;
    int n=0;
    for(int i=0; i<ll; i++)
    {
        if(s[i]=='.') continue;
        n=n*10+(s[i]-'0');
    }
    //cout<<n<<endl;
    double ret=(double)n;
    if(ll!=l)
    {
        ret+=((double)(s[ll+1]-'0'))/10.0;
        ret+=((double)(s[ll+2]-'0'))/100.0;
    }
    //cout<<ret<<endl;
    return ret;
}

int main()
{
    string s,ss="";
    cin>>s;
    double ans=0.0,ans1;
    for(int i=0; i<s.size(); i++)
    {
        if((s[i]>='0' && s[i]<='9') || s[i]=='.')
            ss+=s[i];
        else
        {
            if(ss.size()>0)
                ans+=process(ss);
            ss.clear();
        }
    }
    if(ss.size()>0)
        ans+=process(ss);
    long long res1,res=ans;
    res1=res;
    if(res==0)
    {
        printf("%.2f\n",ans);
        return 0;
    }
    vector<int>v;
    while(res!=0)
    {
        v.push_back(res%10);
        res/=10;
    }
    reverse(v.begin(),v.end());
    int cnt=0,sz=v.size();
    if(sz>1)
    {
        int m=sz%3;
        for(int i=0; i<m; i++)
            printf("%d",v[i]);
        if(m) printf(".");
        for(int i=m; i<sz-1; i++)
        {
            if(cnt==3)
            {
                printf(".");
                cnt=0;
            }
            cnt++;
            printf("%d",v[i]);
        }
    }
    double p=(ans-(double)res1)+v[sz-1];
    if(p>v[sz-1])
        printf("%.2f\n",p);
    else
        printf("%d\n",v[sz-1]);
    return 0;
}


#include<bits/stdc++.h>
using namespace std;

double stod(string s)
{
    int ll,l=s.size();
    if(s[l-3]=='.')
        ll=l-3;
    else
        ll=l;
    int n=0;
    for(int i=0; i<ll; i++)
    {
        if(s[i]=='.') continue;
        n=n*10+(s[i]-'0');
    }
    //cout<<n<<endl;
    double ret=(double)n;
    if(ll!=l)
    {
        ret+=((double)(s[ll+1]-'0'))/10.0;
        ret+=((double)(s[ll+2]-'0'))/100.0;
    }
    return ret;
}

int main()
{
    string s,ss="";
    cin>>s;
    double ans=0.0,ans1;
    for(int i=0; i<s.size(); i++)
    {
        if((s[i]>='0' && s[i]<='9') || s[i]=='.')
            ss+=s[i];
        else
        {
            if(ss.size()>0)
                ans+=stod(ss);
            ss.clear();
        }
    }
    if(ss.size()>0)
        ans+=stod(ss);
    long long res1,res=ans;
    res1=res;
    vector<int>v;
    while(res!=0)
    {
        v.push_back(res%10);
        res/=10;
    }
    reverse(v.begin(),v.end());
    int cnt=0,sz=v.size();
    if(sz>1)
    {
        int m=sz%3;
        for(int i=0; i<m; i++)
            printf("%d",v[i]);
        if(m) printf(".");
        for(int i=m; i<sz-1; i++)
        {
            if(cnt==3)
            {
                printf(".");
                cnt=0;
            }
            cnt++;
            printf("%d",v[i]);
        }
    }
    double p=(ans-(double)res1)+v[sz-1];
    if(p>v[sz-1])
        printf("%.2f\n",p);
    else
        printf("%d\n",v[sz-1]);
    return 0;
}


#include <bits/stdc++.h>

#define FI first
#define SE second

typedef long long ll;
typedef std::pair<ll,ll> pairll;

const static ll INF = 98765432100LL;

int main(void) {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	std::regex pattern("[0-9.]+");

	std::string str; std::cin >> str;
	std::smatch sm;

	std::vector<std::string> all;

	while (std::regex_search(str, sm, pattern)) {
		all.push_back(sm.str());
		str = sm.suffix();
	}

	ll tot = 0;
	for (const auto& s : all) {
		bool no_cents = s.length() <= 3 || s[s.length()-3] != '.';
		ll amt = 0;
		for (const auto& c : s) {
			if (c == '.') continue;
			amt *= 10;
			amt += static_cast<ll>(c - '0');
		}
		if (no_cents) amt *= 100;

		tot += amt;
	}

	if (tot < 100) {
		std::cout << "0.";
		if (tot < 10)
			std::cout << "0";
		std::cout << tot;
		return 0;
	}

	// std::cout << tot << "\n";

	std::stack<std::string> out;
	if (tot % 100 != 0)
		out.push(std::to_string(tot % 100));
	tot /= 100;

	while (tot) {
		out.push(std::to_string(tot % 1000));
		tot /= 1000;
	}

	bool first = true;
	while (!out.empty()) {
		if (!first) {
			for (ll i = 0; i + out.top().length() < 3; ++i)
				std::cout << "0";
		}
		std::cout << out.top();
		out.pop();
		if (!out.empty())
			std::cout << ".";
		first = false;
	}
	std::cout << "\n";

	return 0;
}


#include <bits/stdc++.h>

#define FI first
#define SE second

typedef long long ll;
typedef std::pair<ll,ll> pairll;

const static ll INF = 98765432100LL;

int main(void) {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	std::regex pattern("[0-9.]+");

	std::string str; std::cin >> str;
	std::smatch sm;

	std::vector<std::string> all;

	while (std::regex_search(str, sm, pattern)) {
		all.push_back(sm.str());
		str = sm.suffix();
	}

	ll tot = 0;
	for (const auto& s : all) {
		bool no_cents = s.length() <= 3 || s[s.length()-3] != '.';
		ll amt = 0;
		for (const auto& c : s) {
			if (c == '.') continue;
			amt *= 10;
			amt += static_cast<ll>(c - '0');
		}
		if (no_cents) amt *= 100;

		tot += amt;
	}

	if (tot < 100) {
		std::cout << "0.";
		if (tot < 10)
			std::cout << "0";
		std::cout << tot;
		return 0;
	}

	// std::cout << tot << "\n";

	std::stack<std::string> out;
	if (tot % 100 != 0)
		out.push(std::to_string(tot % 100));
	tot /= 100;

	while (tot) {
		out.push(std::to_string(tot % 1000));
		tot /= 1000;
	}

	while (!out.empty()) {
		std::cout << out.top();
		out.pop();
		if (!out.empty())
			std::cout << ".";
	}
	std::cout << "\n";

	return 0;
}


#include <bits/stdc++.h>

#define FI first
#define SE second

typedef long long ll;
typedef std::pair<ll,ll> pairll;

const static ll INF = 98765432100LL;

std::string pad(const ll& num, const ll& len) {
	std::stringstream ss;
	ss << num;
	std::string ret = ss.str();
	ss.str("");
	for (ll i = 0; i + ret.length() < len; ++i)
		ss << "0";
	ss << ret;
	return ss.str();
}

int main(void) {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	std::regex pattern("[0-9.]+");

	std::string str; std::cin >> str;
	std::smatch sm;

	std::vector<std::string> all;

	while (std::regex_search(str, sm, pattern)) {
		all.push_back(sm.str());
		str = sm.suffix();
	}

	ll tot = 0;
	for (const auto& s : all) {
		bool no_cents = s.length() <= 3 || s[s.length()-3] != '.';
		ll amt = 0;
		for (const auto& c : s) {
			if (c == '.') continue;
			amt *= 10;
			amt += static_cast<ll>(c - '0');
		}
		if (no_cents) amt *= 100;

		tot += amt;
	}

	if (tot < 100) {
		std::cout << "0.";
		if (tot < 10)
			std::cout << "0";
		std::cout << tot;
		return 0;
	}

	// std::cout << tot << "\n";

	std::stack<std::string> out;
	if (tot % 100 != 0)
		out.push(pad(tot % 100, 2));
	tot /= 100;

	while (tot) {
		ll tmp = tot % 1000;
		// std::cout << tmp << "\n";
		tot /= 1000;
		if (tot > 0) out.push(pad(tmp, 3));
		else out.push(std::to_string(tmp));
	}

	while (!out.empty()) {
		std::cout << out.top();
		out.pop();
		if (!out.empty())
			std::cout << ".";
	} std::cout << "\n";

	return 0;
}


#include <bits/stdc++.h>

#define FI first
#define SE second

typedef long long ll;
typedef std::pair<ll,ll> pairll;

const static ll INF = 98765432100LL;

int main(void) {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	std::regex pattern("[0-9.]+");

	std::string str; std::cin >> str;
	std::smatch sm;

	std::vector<std::string> all;

	while (std::regex_search(str, sm, pattern)) {
		all.push_back(sm.str());
		str = sm.suffix();
	}

	ll tot = 0;
	for (const auto& s : all) {
		bool no_cents = s.length() <= 3 || s[s.length()-3] != '.';
		ll amt = 0;
		for (const auto& c : s) {
			if (c == '.') continue;
			amt *= 10;
			amt += static_cast<ll>(c - '0');
		}
		if (no_cents) amt *= 100;

		tot += amt;
	}

	// std::cout << tot << "\n";

	std::stack<std::string> out;
	if (tot % 100 != 0)
		out.push(std::to_string(tot % 100));
	tot /= 100;

	while (tot) {
		out.push(std::to_string(tot % 1000));
		tot /= 1000;
	}

	while (!out.empty()) {
		std::cout << out.top();
		out.pop();
		if (!out.empty())
			std::cout << ".";
	}
	std::cout << "\n";

	return 0;
}


#include <iostream>
#include <vector>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
using namespace std;

#define ll long long

ll a1,a2;

string s;
string ans1,ans2;
vector<string> v,v1,v2;
string num;
int carry,flag;
string ans;

int main(){

	//freopen("sample.txt","r",stdin);
	std::string::size_type sz;
	cin>>s;
	int n = s.size();
	int i = 0;
	while(i<n){
		if(s[i]>='a' && s[i]<='z'){
			i++;
			continue;
		}
		num.clear();
		while(i<n && (s[i]=='.' || (s[i]>='0' && s[i]<='9'))){
			num.push_back(s[i]);
			i++;
		}
		v.push_back(num);
	}
	for(int i=0;i<v.size();i++){
		int j = v[i].size();
		if(j>3){
			if(v[i][j-3]=='.'){
				num.clear();
				num.push_back(v[i][j-2]);
				num.push_back(v[i][j-1]);
				v1.push_back(num);
				num.clear();
				for(int k=0;k<j-3;k++){
					if(v[i][k]!='.') num.push_back(v[i][k]);
				}
				v2.push_back(num);
			}
			else{
				num.clear();
				for(int k=0;k<j;k++){
					if(v[i][k]!='.') num.push_back(v[i][k]);
				}
				v2.push_back(num);
			}
		}
		else{
			num.clear();
			for(int k=0;k<j;k++){
				if(v[i][k]!='.') num.push_back(v[i][k]);
			}
			v2.push_back(num);
		}
	}
	if(!v1.empty()){
		for(int i=0;i<v1.size();i++){
			a1 += stoi(v1[i],&sz);
		}
		carry = a1/100;
		flag = 0;
		a1 = a1%100;
		char buffer[33];
		if(a1 < 10){
			flag = 1;
		}
		sprintf(buffer,"%lld",a1);
		if(flag) ans1.push_back('0');
		ans1 += buffer;
		//cout<<ans1<<endl;
	}
	for(int i=0;i<v2.size();i++){
		a2 += stoi(v2[i],&sz);
	}
	if(carry) a2 += 1;
	char buffer[33];
	sprintf(buffer,"%lld",a2);
	ans2 += buffer;
	for(int i=ans2.size()-1 , c= 0; i>=0;i--){
		ans.push_back(ans2[i]);
		c++;
		if(c==3){
			ans.push_back('.');
			c = 0;
		}
	}
	reverse(ans.begin(),ans.end());
	if(v1.size()!=0){
		if(ans1[0]=='0' && ans1[0]=='0'){
			cout<<ans<<endl;
			return 0;
		}
		ans += ".";
		ans += ans1;
	}
	cout<<ans<<endl;
	return 0;
}


#include <iostream>
#include <vector>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
using namespace std;

#define ll long long

ll a1,a2;

string s;
string ans1,ans2;
vector<string> v,v1,v2;
string num;
int carry,flag;
string ans;

int main(){

	//freopen("sample.txt","r",stdin);
	std::string::size_type sz;
	cin>>s;
	int n = s.size();
	int i = 0;
	while(i<n){
		if(s[i]>='a' && s[i]<='z'){
			i++;
			continue;
		}
		num.clear();
		while(i<n && (s[i]=='.' || (s[i]>='0' && s[i]<='9'))){
			num.push_back(s[i]);
			i++;
		}
		v.push_back(num);
	}
	for(int i=0;i<v.size();i++){
		int j = v[i].size();
		if(j>3){
			if(v[i][j-3]=='.'){
				num.clear();
				num.push_back(v[i][j-2]);
				num.push_back(v[i][j-1]);
				v1.push_back(num);
				num.clear();
				for(int k=0;k<j-3;k++){
					if(v[i][k]!='.') num.push_back(v[i][k]);
				}
				v2.push_back(num);
			}
			else{
				num.clear();
				for(int k=0;k<j;k++){
					if(v[i][k]!='.') num.push_back(v[i][k]);
				}
				v2.push_back(num);
			}
		}
		else{
			num.clear();
			for(int k=0;k<j;k++){
				if(v[i][k]!='.') num.push_back(v[i][k]);
			}
			v2.push_back(num);
		}
	}
	if(!v1.empty()){
		for(int i=0;i<v1.size();i++){
			a1 += stoi(v1[i],&sz);
		}
		carry = a1/100;
		flag = 0;
		a1 = a1%100;
		char buffer[33];
		if(a1 < 10){
			flag = 1;
		}
		sprintf(buffer,"%lld",a1);
		if(flag) ans1.push_back('0');
		ans1 += buffer;
		//cout<<ans1<<endl;
	}
	for(int i=0;i<v2.size();i++){
		a2 += stoi(v2[i],&sz);
		//cout<<a2<<endl;
	}
	if(carry) a2 += carry;
	char buffer[33];
	sprintf(buffer,"%lld",a2);
	ans2 += buffer;
	for(int i=ans2.size()-1 , c= 0; i>=0;i--){
		ans.push_back(ans2[i]);
		c++;
		if(i==0) break;
		if(c==3){
			ans.push_back('.');
			c = 0;
		}
	}
	reverse(ans.begin(),ans.end());
//cout<<v1.size()<<endl;
	if(v1.size()!=0){
		if(ans1[0]=='0' && ans1[1]=='0'){
			cout<<ans<<endl;
			return 0;
		}
		ans += ".";
		ans += ans1;
	}
	cout<<ans<<endl;
	return 0;
}