#include <bits/stdc++.h>
using namespace std;
string s, a[1001][1001], b[1001];
int n, l[1001];
struct te {
  int l, r[11];
};
int StringToNumber(const string &Text) {
  stringstream ss(Text);
  int result;
  return ss >> result ? result : 0;
}
void init(te &a) {
  a.l = 0;
  for (int i = 1; i <= 10; i++) a.r[i] = 0;
}
te cong(te a, te b) {
  te res;
  init(res);
  res.l = max(a.l, b.l);
  for (int i = 1; i <= res.l; i++) {
    res.r[i] += a.r[i] + b.r[i];
    if (res.r[i] > 1000000000) {
      res.r[i + 1] = res.r[i] / 1000000000;
      res.r[i] = res.r[i] % 1000000000;
    }
  }
  if (res.r[res.l + 1] != 0) res.l++;
  return res;
}
te creat(string s1) {
  string s = "";
  int dem = 0;
  te res;
  init(res);
  for (int i = s1.length() - 1; i >= 0; i--) {
    if (s[i] == '-') continue;
    dem++;
    s = s1[i] + s;
    if (dem == 9) {
      res.l++;
      res.r[res.l] = StringToNumber(s);
      s = "";
      dem = 0;
    }
  }
  if (dem != 0) {
    res.l++;
    res.r[res.l] = StringToNumber(s);
  }
  return res;
}
string NumberToString(long long Number) {
  stringstream ss;
  ss << Number;
  return ss.str();
}
string cst(char ch) {
  string s(1, ch);
  return s;
}
void inkq(te res) {
  int j, muoimu;
  s = NumberToString(res.r[res.l]);
  for (int i = res.l - 1; i >= 1; i--) {
    muoimu = 1;
    for (j = 1; j <= 9; j++) {
      muoimu *= 10;
      if (res.r[i] < muoimu) break;
    }
    for (int k = j + 1; k <= 9; k++) s += NumberToString('0');
    s += NumberToString(res.r[i]);
  }
  while (s.length() < 3) s = "0" + s;
  int k = s.length();
  n = 2;
  b[2] = "";
  b[1] = cst(s[k - 2]) + cst(s[k - 1]);
  int dem = 0;
  for (int i = k - 2; i >= 1; i--) {
    if (dem == 3) {
      n++;
      b[n] = "";
      dem = 0;
    }
    dem++;
    b[n] = cst(s[i - 1]) + b[n];
  }
  cout << b[n];
  for (int i = n - 1; i >= 2; i--) cout << '.' << b[i];
  if (b[1] != "00") cout << '.' << b[1];
}
void docdl() { cin >> s; }
void init() {
  n = 1, l[1] = 1;
  for (int i = 1; i <= s.length(); i++)
    if (s[i - 1] >= '0' && s[i - 1] <= '9') {
      a[n][l[n]] = a[n][l[n]] + s[i - 1];
      if (s[i] == '.')
        l[n]++;
      else if (s[i] >= 'a' && s[i] <= 'z') {
        n++;
        l[n] = 1;
      }
    }
  for (int i = 1; i <= n; i++) {
    if (l[i] == 1)
      b[i] = a[i][1] + "00";
    else {
      if (a[i][l[i]].length() == 3) {
        for (int j = 1; j <= l[i]; j++) b[i] = b[i] + a[i][j];
        b[i] = b[i] + "00";
      } else
        for (int j = 1; j <= l[i]; j++) b[i] = b[i] + a[i][j];
    }
  }
}
void xuli() {
  init();
  te res = creat(b[1]);
  for (int i = 2; i <= n; i++) res = cong(res, creat(b[i]));
  inkq(res);
}
int main() {
  ios_base::sync_with_stdio(false);
  docdl();
  xuli();
}
