#include <bits/stdc++.h>
using namespace std;
void Merge(int* array, int low, int high, int mid);
void MergeSort(int* a, int low, int high);
int BinarySearch(int* a, int low, int high, int num);
int myGCD(int num1, int num2);
int findOpe(string str);
int main(int argc, char* argv[]) {
  int n, a = 0;
  string str;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> str;
    a += findOpe(str);
  }
  cout << a << endl;
}
int findOpe(string str) {
  for (int i = 0; str[i] != NULL; ++i) {
    if (str[i] == '+')
      return 1;
    else if (str[i] == '-')
      return -1;
  }
}
int myGCD(int num1, int num2) {
  if ((num1 % num2) == 0)
    return num2;
  else
    return myGCD(num2, num1 % num2);
}
void Merge(int* array, int low, int high, int mid) {
  int i, j, k, temp[high - low + 1];
  i = low;
  k = 0;
  j = mid + 1;
  while (i <= mid && j <= high) {
    if (array[i] < array[j]) {
      temp[k] = array[i];
      ++i;
    } else {
      temp[k] = array[j];
      ++j;
    }
    ++k;
  }
  while (i <= mid) {
    temp[k] = array[i];
    ++k;
    ++i;
  }
  while (j <= high) {
    temp[k] = array[j];
    ++k;
    ++j;
  }
  for (i = low; i <= high; ++i) {
    array[i] = temp[i - low];
  }
}
void MergeSort(int* a, int low, int high) {
  int mid;
  if (low < high) {
    mid = (low + high) / 2;
    MergeSort(a, low, mid);
    MergeSort(a, mid + 1, high);
    Merge(a, low, high, mid);
  }
}
int BinarySearch(int* a, int low, int high, int num) {
  if (high >= low) {
    int mid = (low + (high - 1)) / 2;
    if (a[mid] == num)
      return a[mid];
    else if (a[mid] < num)
      return BinarySearch(a, mid + 1, high, num);
    else
      return BinarySearch(a, low, mid - 1, num);
  } else {
    return -1;
  }
}

### Prompt

Your task is to create a CPP solution to the following problem:

The classic programming language of Bitland is Bit++. This language is so peculiar and complicated.

The language is that peculiar as it has exactly one variable, called x. Also, there are two operations:

  * Operation ++ increases the value of variable x by 1. 
  * Operation -- decreases the value of variable x by 1. 



A statement in language Bit++ is a sequence, consisting of exactly one operation and one variable x. The statement is written without spaces, that is, it can only contain characters "+", "-", "X". Executing a statement means applying the operation it contains.

A programme in Bit++ is a sequence of statements, each of them needs to be executed. Executing a programme means executing all the statements it contains.

You're given a programme in language Bit++. The initial value of x is 0. Execute the programme and find its final value (the value of the variable when this programme is executed).

Input

The first line contains a single integer n (1 ≤ n ≤ 150) — the number of statements in the programme.

Next n lines contain a statement each. Each statement contains exactly one operation (++ or --) and exactly one variable x (denoted as letter «X»). Thus, there are no empty statements. The operation and the variable can be written in any order.

Output

Print a single integer — the final value of x.

Examples

Input

1
++X


Output

1


Input

2
X++
--X


Output

0

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
void Merge(int* array, int low, int high, int mid);
void MergeSort(int* a, int low, int high);
int BinarySearch(int* a, int low, int high, int num);
int myGCD(int num1, int num2);
int findOpe(string str);
int main(int argc, char* argv[]) {
  int n, a = 0;
  string str;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> str;
    a += findOpe(str);
  }
  cout << a << endl;
}
int findOpe(string str) {
  for (int i = 0; str[i] != NULL; ++i) {
    if (str[i] == '+')
      return 1;
    else if (str[i] == '-')
      return -1;
  }
}
int myGCD(int num1, int num2) {
  if ((num1 % num2) == 0)
    return num2;
  else
    return myGCD(num2, num1 % num2);
}
void Merge(int* array, int low, int high, int mid) {
  int i, j, k, temp[high - low + 1];
  i = low;
  k = 0;
  j = mid + 1;
  while (i <= mid && j <= high) {
    if (array[i] < array[j]) {
      temp[k] = array[i];
      ++i;
    } else {
      temp[k] = array[j];
      ++j;
    }
    ++k;
  }
  while (i <= mid) {
    temp[k] = array[i];
    ++k;
    ++i;
  }
  while (j <= high) {
    temp[k] = array[j];
    ++k;
    ++j;
  }
  for (i = low; i <= high; ++i) {
    array[i] = temp[i - low];
  }
}
void MergeSort(int* a, int low, int high) {
  int mid;
  if (low < high) {
    mid = (low + high) / 2;
    MergeSort(a, low, mid);
    MergeSort(a, mid + 1, high);
    Merge(a, low, high, mid);
  }
}
int BinarySearch(int* a, int low, int high, int num) {
  if (high >= low) {
    int mid = (low + (high - 1)) / 2;
    if (a[mid] == num)
      return a[mid];
    else if (a[mid] < num)
      return BinarySearch(a, mid + 1, high, num);
    else
      return BinarySearch(a, low, mid - 1, num);
  } else {
    return -1;
  }
}

```